Minimalistic extensible model component for Fend.js.
Create a new model with the given name.
var Modeler = require('fendjs-model');
var User = Modeler('User');Use the given plugin fn() on all model.
var Modeler = require('fendjs-model');
Modeler.use(function (Model) {
Model.attr('created_at', { type: 'date' });
Model.attr('updated_at', { type: 'date' });
});Define an attribute name with optional meta data object.
var Modeler = require('fendjs-model');
var Post = Modeler('Post')
.attr('id')
.attr('title')
.attr('body')
.attr('created_at')
.attr('updated_at')With meta data used by plugins:
var Modeler = require('fendjs-model');
var Post = Modeler('Post')
.attr('id', { required: true, type: 'number' })
.attr('title', { required: true, type: 'string' })
.attr('body', { required: true, type: 'string' })
.attr('created_at', { type: 'date' })
.attr('updated_at', { type: 'date' })Add validation fn().
Use the given plugin fn().
var Modeler = require('fendjs-model');
var Post = Modeler('Post')
Post.use(function (Model) {
Model.attr('created_at', { type: 'date' });
Model.attr('updated_at', { type: 'date' });
});Get id and invoke fn(err, model).
Get all and invoke fn(err, model).
Remove all and invoke fn(err).
"Getter" function generated when Model.attr(name) is called.
var Post = Modeler('Post')
.attr('title')
.attr('body')
var post = new Post;
post.title('Ferrets')
post.body('Make really good pets')"Setter" function generated when Model.attr(name) is called.
var Post = Modeler('Post')
.attr('title')
.attr('body')
var post = new Post({ title: 'Cats' });
post.title()
// => "Cats"
post.title('Ferrets')
post.title()
// => "Ferrets"- Emits "change" event with
(name, value, previousValue). - Emits "change ATTR" event with
(value, previousValue).
post.on('change', function(name, val, prev){
console.log('changed %s from %s to %s', name, prev, val)
})
post.on('change title', function(val, prev){
console.log('changed title')
})Get / set the primary key.
Returns true if the model is unsaved.
Return a JSON representation of the model (its attributes).
Check if attr is non-null.
Get attr's value.
Set multiple attrs.
user.set({ name: 'Tobi', age: 2 })Check if the model is "dirty" and return an object of changed attributes. Optionally check a specific attr and return a Boolean.
Define error msg for attr.
Run validations and check if the model is valid.
user.isValid()
// => false
user.errors
// => [{ attr: ..., message: ... }]Save or update and invoke the given callback fn(err).
var user = new User({ name: 'Tobi' })
user.save(function(err){
})Emits "save" when complete.
Destroy and invoke optional fn(err).
Emits "destroy" when successfully deleted.
$ npm install
$ make test
See the LICENSE.




