A simple, minimalistic object model for nodejs


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 = '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

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.