Home

Awesome

mongules

Join the chat at https://gitter.im/ricardofbarros/mongules

Mongoose models validations with node-validator.

It respects the DRY (Don't Repeat Yourself) principle, so you don't need to write a validation function for each field in every model and a message to every validation function.

mongules is here to save you from that boring task. yey!

Installation

npm install mongules

Basic Usage

var mongoose = require('mongoose');
var Mongules = require('mongules');

var mongules = new Mongules();

var Schema = mongoose.Schema;

var testSchema = new Schema({
  name: {
    type: String,
    validator : [
      {
        rule : 'isAlphanumeric',
        msg : 'Only alphanumeric'
      },
      {
        rule : 'isLength',
        args : [4 , 8],
        msg : 'Name must have a length between 4 and 8'
      }
    ]
  }
});

testSchema.plugin(mongules.validate);

module.exports = mongoose.model('Test', testSchema);

For a more complex example, see the example directory.

Default validation methods

All methods from node-validator.

Extend methods

Like validator.extend, you can create custom validation methods, and reutilize them, like the following example:

mongules.extend('userType', function(str) {
    return /admin|user/i.test(str);
});

Messages Hooks

This are default messages you can associate to a method, so you don't have to write the same message over and over again.

NOTE: If the rule has a msg key, it will ignore the message hook.

Usage

mongules.hookMsg(name, msg);

NOTE: name can be string, array or an object. See examples bellow for better understanding.

Examples

Single message
mongules.hookMsg('methodName', 'Hooked message');
Multiple messages
mongules.hookMsg({
    'methodName1' : 'Hooked message for methodName1',
    'methodName2' : 'Hooked message for methodName2'
});
Multiple methods with same message
mongules.hookMsg(
    ['methodName1','methodName2','methodName3'],
    'Hooked message for methodName1,methodName2,methodName3'
);

License

MIT