https://github.com/ericclemmons/bookshelf-manager
Easily wire up models to APIs with supported for complex, nested saving.
https://github.com/ericclemmons/bookshelf-manager
Last synced: about 1 year ago
JSON representation
Easily wire up models to APIs with supported for complex, nested saving.
- Host: GitHub
- URL: https://github.com/ericclemmons/bookshelf-manager
- Owner: ericclemmons
- License: mit
- Created: 2014-02-27T01:19:03.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2020-05-29T02:05:57.000Z (about 6 years ago)
- Last Synced: 2025-03-10T19:03:17.626Z (over 1 year ago)
- Language: JavaScript
- Size: 85.9 KB
- Stars: 33
- Watchers: 4
- Forks: 10
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# [Bookshelf Manager][0]
[](https://travis-ci.org/ericclemmons/bookshelf-manager)
[](https://david-dm.org/ericclemmons/bookshelf-manager)
[](https://david-dm.org/ericclemmons/bookshelf-manager#info=devDependencies&view=table)
> Model & Collection manager for [Bookshelf.js][1] to make it easy to create &
> save deep, nested JSON structures from API requests.
## Installation
npm install bookshelf-manager --save
## Usage
1. Register as a plugin in Bookshelf:
```javascript
bookshelf.plugin('bookshelf-manager');
```
- Optionally, you can pass in an object with a `root` property to read models from a specified directory:
```javascript
bookshelf.plugin('bookshelf-manager', { root: 'path/to/models' });
```
2. Register individual models (not required if you passed in a `root` model directory as above):
```javascript
bookshelf.manager.register(model, modelName);
```
- Note: Also compatible with models registered with the [Bookshelf Registry](https://github.com/tgriesser/bookshelf/wiki/Plugin:-Model-Registry) plugin.
3. Use the methods on `bookshelf.manager` to create, fetch, and save models or collections with support for deeply-nested attributes. E.g.:
```javascript
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
});
```
## API
*In progress...*
## Changelog
- 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.
## [License][2]
Copyright (c) 2013 Eric Clemmons
Licensed under the MIT license.
[0]: https://github.com/ericclemmons/bookshelf-manager
[1]: http://bookshelfjs.org/
[2]: https://raw.github.com/ericclemmons/bookshelf-manager/master/LICENSE