Serverbone.js is a server-side Rest API framework that supports multiple data stores on Node.js. Especially, you can combine multiple data stores such as a document store (e.g. MongoDB using backbone-db-mongodb), and a key-value store for indexes (e.g. Redis using backbone-db-redis). The project is based on the following modules:
The goals of the framework are:
BaseModel extends backbone-blueprint's ValidatingModel providing e.g. Model lifecycle conventions, ACL related functionality & CRUD helpers.
Model for storing strings/numbers. Meant to be used together with ValueIndexMixin.
Model for storing raw JSON data in the id field. Meant to be used together /w JSONIndexMixin.
Base Collection for most other Collections
Deprecated
Mixin for creating collections, that can have their indexes stored in other databases from the main db of the Collection.
Mixin for Collections that store JSON data in model's id field.
Mixin for reading values from multiple indexes, i.e. joins multiple Redis sets.
Mixin for Collections that store plain strings into Redis sets.
ACL permissions are defined in the Model's schema as role: [actions]
. Permissions may be defined in Model level (which applies to all properties) or per property (which overrides Model level permissions). For example:
permissions: {
admin: ['*'],
owner: ['update', 'destroy'],
'*': ['read', 'create']
}
This would give admin
role permission to all verbs. owner
can update & destroy Model. Finally world
(indicated by *
) can read models & create new Model instances. How roles are defined is up to the application to implement. You should override Model's getRoles
for implementing custom functionality.
Provides mapping Model/Collection CRUD operation into HTTP verbs, thus adding routes into express application. By default the following routes are added:
Maps to Collection.fetch.
Maps to Collection.post (creates a new model).
Maps to Model.fetch (fetches model with given id).
Maps to Model.update (updates model with given id).
Maps to Model.delete (delete model with given id).
Helpers for running async functions.
Handles sending JSON/error responses.
make test
make check-coverage
open coverage/lcov-report/index.html