Easily wire up models to APIs with supported for complex, nested saving.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib Version 0.3.0 Sep 21, 2016
.gitattributes JSCS code cleanup + fix line endings Sep 19, 2016
.gitignore Initial commit Feb 27, 2014
.jscs.json Reimplement as a plugin for Bookshelf/Knex 0.8.x Jun 26, 2015
.jshintrc Reimplement as a plugin for Bookshelf/Knex 0.8.x Jun 26, 2015
.travis.yml Update dev/peer dependencies and bump version (#9) Jul 1, 2016
README.md Version 0.3.0 Sep 21, 2016
index.js Reimplement as a plugin for Bookshelf/Knex 0.8.x Jun 26, 2015
package.json Version 0.3.0 Sep 21, 2016


Bookshelf Manager

Build Status Dependencies devDependencies

Model & Collection manager for Bookshelf.js to make it easy to create & save deep, nested JSON structures from API requests.


npm install bookshelf-manager --save


  1. Register as a plugin in Bookshelf:

    • Optionally, you can pass in an object with a root property to read models from a specified directory:

      bookshelf.plugin('bookshelf-manager', { root: 'path/to/models' });
  2. Register individual models (not required if you passed in a root model directory as above):

    bookshelf.manager.register(model, modelName);
  3. Use the methods on bookshelf.manager to create, fetch, and save models or collections with support for deeply-nested attributes. E.g.:

    return bookshelf.manager.create('car', {
      features: [
        { name: 'ABS', cost: '1250' },
        { name: 'GPS', cost: '500' }
      quantity: 1
    }).then(function(car) {
      // created car should now have the associated features


In progress...


  • v0.3.0 - Add setHasOne functionality (#12)
  • v0.2.1 - Several breaking changes occurred with this version due to updating devDependencies and peerDependencies:
    • Knex and Bookshelf updated their bluebird and lodash dependencies
    • Knex changed how undefined values are inserted
  • v0.1.0 - Reimplement as a plugin for Bookshelf/Knex 0.8.x
  • v0.0.10 - Enforce belongsToMany IDs
  • v0.0.9 - Destroy removed hasMany models
  • v0.0.8 - Fetch empty collections
  • v0.0.7 - Attempt to use existing, eager-loaded models rather than re-fetch
  • v0.0.6 - Ignore _pivot_ keys
  • v0.0.5 - Improve error handling for unintialized instances & missing files
  • v0.0.4 - Improve .attach and .detach
  • v0.0.3 - Add support for lazy-managed models.
  • v0.0.2 - If instanceof Bookshelf is not provided, instance from Bookshelf.initialize is used.
  • v0.0.1 - Initial Release.


Copyright (c) 2013 Eric Clemmons Licensed under the MIT license.