bookshelf

A lightweight ORM for PostgreSQL, MySQL, and SQLite3

bookshelf.js

Bookshelf is a Node.js ORM with support for PostgreSQL, MySQL / MariaDB, and SQLite3.

It is built atop the Knex Query Builder, and is strongly influenced by the Model and Collection foundations of Backbone.js.

It features transaction support, one-to-one, one-to-many, many-to-many, and polymorphic relations.

For Docs, License, Tests, FAQ, and other information, see: http://bookshelfjs.org.

To suggest a feature, report a bug, or general discussion: http://github.com/tgriesser/bookshelf/issues/

We have several examples on the website. Here is the first one to get you started:

var knex = require('knex')({client: 'mysql', connection: process.env.MYSQL_DATABASE_CONNECTION });
var bookshelf = require('bookshelf')(knex);
 
var User = bookshelf.Model.extend({
  tableName: 'users'
  messagesfunction() {
    return this.hasMany(Posts);
  }
});
 
var Posts = bookshelf.Model.extend({
  tableName: 'messages',
  tagsfunction() {
    return this.belongsToMany(Tag);
  }
});
 
var Tag = bookshelf.Model.extend({
  tableName: 'tags'
})
 
User.where('id', 1).fetch({withRelated: ['posts.tags']}).then(function(user) {
 
  console.log(user.related('posts').toJSON());
 
}).catch(function(err) {
 
  console.error(err);
 
});