Socket
Book a DemoInstallSign in
Socket

fendjs-model

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fendjs-model

Elegant data models for Fend.js

latest
Source
npmnpm
Version
0.0.7
Version published
Maintainers
1
Created
Source

fendjs-model

Build Status Coverage Status NPM version Dependency Status

Minimalistic extensible model component for Fend.js.

API

Modeler(name)

Create a new model with the given name.

var Modeler = require('fendjs-model');
var User = Modeler('User');

Modeler.use(fn)

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' });
});

Model.attr(name, [meta])

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' })

Model.validate(fn)

Add validation fn().

Model.use(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' });
});

Model.get(id, fn)

Get id and invoke fn(err, model).

Model.all(fn)

Get all and invoke fn(err, model).

Model.destroyAll(fn)

Remove all and invoke fn(err).

Model#ATTR()

"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')

Model#ATTR(value)

"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')
})

Model#primary(val)

Get / set the primary key.

Model#isNew()

Returns true if the model is unsaved.

Model#toJSON()

Return a JSON representation of the model (its attributes).

Model#has(attr)

Check if attr is non-null.

Model#get(attr)

Get attr's value.

Model#set(attrs)

Set multiple attrs.

user.set({ name: 'Tobi', age: 2 })

Model#changed([attr])

Check if the model is "dirty" and return an object of changed attributes. Optionally check a specific attr and return a Boolean.

Model#error(attr, msg)

Define error msg for attr.

Model#isValid()

Run validations and check if the model is valid.

user.isValid()
// => false

user.errors
// => [{ attr: ..., message: ... }]

Model#save(fn)

Save or update and invoke the given callback fn(err).

var user = new User({ name: 'Tobi' })

user.save(function(err){

})

Emits "save" when complete.

Model#destroy([fn])

Destroy and invoke optional fn(err).

Emits "destroy" when successfully deleted.

Testing

$ npm install
$ make test

License

MIT license.

See the LICENSE.

Bitdeli Badge

Keywords

fend.js

FAQs

Package last updated on 23 Nov 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts