nodejs-model
v0.1.6
Published
A simple, minimalistic object model for nodejs
Downloads
18
Readme
node-model
Okay, so you have a node app backed with some kind of NoSQL schema-less DB such as CouchDB and it all works pretty well,
But hey, even though schema-less, no validations, filtering, etc is very cool and dynamic, building applications like that, you will probably find yourself with an app with a very low data integrity and at some point, you will add these capabilities, or at least some of them, so, this is what node-model is for.
Note: It is heavily inspired by Ruby AcitveObject Validations but is enhanced with more capabilities than validations such as filtering and sanitization.
Why use node-model?
If one or more of the bullets below makes sense to you, then you should try node-model.
- You want model validations without raising the complexity of your data models.
- You want to sanitize some of your model properties easily.
- Sometimes your models contain sensitive data (such as a 'password'/'token' field in user object) and you want a simple way to filter such properties based on access levels.
Basic Usage
This is how it works:
Create a model definition with some validation rules
var model = require 'node-model'
var Person;
Person = model.create({
validations: {
name: {
presence: true
},
age: {
numericality: {
lessThan: 150
}
}
}
});
At some point, after loading an object from DB / file / JSON / etc, wrap it as a Person model and perform validations.
//Asuming we have some instance such as
p1.name = 'Kitty'
p1.age = 5
//Wrap the object as a person
p1Model = Person.create p1
//Invoke validations and wait for the validations to fulfill
p1Model.validate().then(function(finished) {
if p1Model.isValid() {
//validated, perform business logic
} else {
//validation failed, dump validation errors to the console
console.log(p1Model.errors)
}
});
Simple as that, your model is enhanced with a validate() method, simply invoke it to validate the model object against the validation rules defined in the schema.
For more details about more features, read below.