Skip to content
Simple crud service for object definition, validation, basic persistance and collection.
JavaScript Makefile
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
test
.gitignore
.jshintrc
.travis.yml
Makefile
README.md
crud-service.js
package.json

README.md

crud-service

build status

NPM

Simple crud service for object definition, validation, basic persistence and collection.

Installation

npm install crud-service

Usage

var CrudService = require('crud-service')
  , save = require('save')
  , schema = require('./schema')
  , service = new Service('things', save('thing'), schema())

// service now has some slightly inflated CRUD functionality:
// .create() .read() .update() .partialUpdate()
// .delete() .deleteMany() .find() .count()

API

var service = new CrudService(String: propertyName, Save: collection, Schemata: schema, Object, options)

Create a new crud service that stores entites in the provided collection. This should be a save instance with your preferred engine. A schemata schema is required for validation

service has the the following CRUD-y methods:

service.create(Object: obj, Object: options, Function: cb)

service.read(String: objId, Function: cb)

service.update(Object: obj, Object: options, Function: cb)

service.partialUpdate(Object: obj, Object: options, Function: cb)

service.delete(String: objId, Function: cb)

service.deleteMany(Object: query, Function: cb)

service.find(Object: query, Object: options, Function: cb)

All options arguments are optional.

Omitting cb when calling service.find() will return a stream.

service also has the following method:

service.pre(String: hook, Function: processor)

This facilitates a pipeline for object manipulation before certain operations. pre() can be called multiple times for the same hook and the processor functions will be queued up. A processor function has the signature function (entity, cb) {}, and should callback with cb(err, entity).

A simple example is to maintain a lastUpdated property on service objects:

function setUpdateTime(entity, cb) {
  entity.lastUpdated = new Date()
  cb(null, entity)
}

service.pre('update', setUpdateTime)
service.pre('partialUpdate', setUpdateTime)

The available pre hooks are:

  • create - after validation, just before persistence
  • createValidate - before validation
  • update - after validation, just before persistence
  • updateValidate - before validation
  • partialUpdate - after validation, just before persistence
  • partialValidate - before validation
  • delete - before deletion

Credits

Paul Serby follow me on twitter @serby

Licence

Licenced under the New BSD License

Something went wrong with that request. Please try again.