Bookshelf.js ist ein JavaScript-ORM für Node.js, das auf dem Knex SQL Query Builder aufbaut und PostgreSQL, MySQL und SQLite3 unterstützt.
Modelldefinition (Model Definition)
const knex = require('knex')(require('./knexfile'));
const bookshelf = require('bookshelf')(knex);
const Summary = bookshelf.Model.extend({
tableName: 'summaries',
hasTimestamps: true, // enables 'created_at' and 'updated_at'
// Or specify custom column names:
// hasTimestamps: ['created_on', 'updated_on']
});
Assoziationen und Beziehungen (Associations & Relations)
const Book = bookshelf.Model.extend({
tableName: 'books',
summary() {
return this.hasOne(Summary);
},
author() {
return this.belongsTo(Author);
},
genres() {
return this.belongsToMany(Genre);
}
});
CRUD-Operationen und Abfragen
// Create & Save
const book = new Book({ title: 'Design Patterns', pages: 395 });
await book.save();
// Or create shortcut
await Book.forge({ title: 'Refactoring' }).save();
// Fetch & Querying
// Fetch single record by primary key
const book = await new Book({ id: 1 }).fetch();
// Filtering with attributes
const redBooks = await Book.where({ favorite_color: 'red' }).fetchAll();
// Knex query builder integration
const recentBooks = await Book.query((qb) => {
qb.where('pages', '>', 200).orderBy('created_at', 'desc');
}).fetchAll();