Need help with model?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

component
123 Stars 42 Forks 115 Commits 18 Opened issues

Description

Minimalistic extensible data models

Services available

!
?

Need anything else?

Contributors list

model

W.I.P minimalistic extensible model component.

API

model(name)

Create a new model with the given

name
.
var model = require('model');
var User = model('User');

.attr(name, [meta])

Define an attribute

name
with optional
meta
data object.
var model = require('model');

var Post = model('Post') .attr('id') .attr('title') .attr('body') .attr('created_at') .attr('updated_at')

With meta data used by plugins:

var model = require('model');

var Post = model('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' })

.validate(fn)

TODO: validation callback docs

.use(fn)

TODO: plugin docs

.url([path])

Return base url, or url to

path
.
User.url()
// => "/users"

User.url('add') // => "/users/add"

.route(path)

Set base path for urls. Note this is defaulted to

'/' + modelName.toLowerCase() + 's'
User.route('/api/u')

User.url() // => "/api/u"

User.url('add') // => "/api/u/add"

.headers({header: value})

Sets custom headers for static and method requests on the model.

User.headers({
  'X-CSRF-Token': 'some token',
  'X-API-Token': 'api token' 
});

.ATTR()

"Getter" function generated when

Model.attr(name)
is called.
var Post = model('Post')
  .attr('title')
  .attr('body')

var post = new Post({ title: 'Cats' });

post.title() // => "Cats"

.ATTR(value)

"Setter" function generated when

Model.attr(name)
is called.
var Post = model('Post')
  .attr('title')
  .attr('body')

var post = new Post;

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

.isNew()

Returns

true
if the model is unsaved.

.toJSON()

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

.has(attr)

Check if

attr
is non-
null
.

.get(attr)

Get

attr
's value.

.set(attrs)

Set multiple

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

.changed([attr])

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

attr
and return a
Boolean
.

.error(attr, msg)

Define error

msg
for
attr
.

.isValid()

Run validations and check if the model is valid.

user.isValid()
// => false

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

.url([path])

Return this model's base url or relative to

path
:
var user = new User({ id: 5 });
user.url('edit');
// => "/users/5/edit"

.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.

.destroy([fn])

Destroy and invoke optional

fn(err)
.

Emits "destroy" when successfully deleted.

Links

Testing

$ npm install
$ make test &
$ open http://localhost:3000

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.