revalidator-model
v0.4.2
Published
Simple validatable models with revalidator.
Downloads
4
Readme
Synopsis
revalidator-model is a simple model library based on revalidator.
Install
With NPM
npm install revalidator-model
From source
git clone https://github.com/pluma/revalidator-model.git
cd revalidator-model
npm install
make test
Usage Example
var model = require('revalidator-model');
var List = model({
properties: {
items: {type: 'array'}
},
proto: {
size: function() {
return this.items.length;
}
},
defaults: {
flavor: 'pungent'
},
hydrate: {
items: function(val) {
return val.split(', ');
}
},
dehydrate: {
items: function(val) {
return val.join(', ');
}
}
});
var list = List.hydrate({items: 'foo, bar, qux', foo: 'bar'});
console.log(list.items); // ['foo', 'bar', 'qux']
console.log(list.size()); // 3
console.log(list.flavor); // 'pungent'
console.log(list.dehydrate()); // {items: 'foo, bar, qux'}
console.log(list.validate()); // {valid: true, errors: []}
var list2 = new List({items: 5, flavor: 'spicy'});
console.log(list2.flavor); // 'spicy';
console.log(list2.items); // 5
console.log(list2.validate().valid); // false
list2.dehydrate(); // fails with error: "Object 5 has no method split."
API
model(schema:Object):Model
Creates a Model
with the given revalidator schema
.
In addition to the properties recognized by revalidator
(properties
, patternProperties
, additionalProperties
), the schema
can have the following properties:
schema.proto:Object (optional)
The prototype
instances of the Model
should inherit from. Use this to specify methods you want to have access to on your model's instances.
schema.defaults:Object (optional)
Default property values to be copied to new instances of this
Model
. Arrays and objects will be deep-cloned.
schema.hydrate:Function (optional)
A transformation that will be applied to objects processed by your model's hydrate
method.
schema.dehydrate:Function (optional)
A transformation that will be applied to model instance when processed by its dehydrate
method.
new Model(data:Object):Instance
Creates a new instance with the given data
. Use of the new
keyword is optional.
Any properties of the given data
object that are not recognized will be ignored.
Model.hydrate(data:Object):Instance
See schema.hydrate
. Hydrates the object from the given data
and returns a new Model
instance.
Model.schema:Object
The schema
that was used to create this Model
.
Model.validate(data:Object):Object
Validates the given data
against the Model
's schema using revalidator
. The result object has two attributes:
valid:Boolean
Whether the data passed validation.
errors:Array
An array of error messages if the validation failed.
Model#validate():Object
Validates the instance. Shorthand for Model.validate(instance)
.
Model#dehydrate():Object
See schema.dehydrate
. Dehydrates the instance's data and returns it.
Unlicense
This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.