validify.js
v0.1.0
Published
Flexible validation framework
Downloads
6
Readme
validify.js
validify.js is a JavaScript library for data validation.
Features:
- Supports Node.js, require.js or standalone use in the browser
- Validators can be invoked using the dynamic methods generated by the framework
- Validation can be performed by specifying the object/value to validate and a constraints JSON object
NOTE: this library is not yet stable and is likely to change and be refactored rapidly
Install
Node.js
npm install validify.js
Bower
bower install
Usage
Node.js
var validify = require('validify');
validify.email('[email protected]') // returns true
Browser (standalone)
<script src="validify.standalone.min.js"></script>
<script>
validify.email('[email protected]') // returns true
</script>
Browser (require.js)
<script src="require.js"></script>
<script>
require(['validify.standalone.min'], function(validify) {
validify.email('[email protected]') // returns true
})
</script>
Constraints
###Format
[
{
<attribute>: {
<validator>: <options>
}
},
...
]
attribute - name of the object attribute to validate, or "*" for simple value validator - the name of the validator to use options - the options to use for the enclosing validator
###Invoking
var validify = require('validify');
// validate(<object>, <constraint(s)>, mode)
// mode is irrelevant when single constraint passed in
validify.validate(testObject, {
firstName: { present: true }
});
// mode 'any' - firstName or nickName must be present
validify.validate(testObject, [
{ firstName: { present: true } },
{ nickName: { present: true } }
], 'any');
Modes:
all (and) - every one of the listed constraints must be true any (or) - at least one of the listed constraints must be true one (xor) - only one of the listed constraints can be true
###Example 1
Simple validation of a single field.
Object:
id (integer)
firstName (string)
lastName (string)
Logic:
Rule:
{
firstName: {
greaterThan: { min: 3 }
}
}
###Example 2
Multiple fields can be validated for a single object.
Object:
id (integer)
firstName (string)
lastName (string)
Logic:
Rule:
[
{
id: {
present: false
}
},
{
firstName: {
present: true,
length: { min: 0, max: 10, inclusive: false}
}
}
]
###Example 3
Simple logic can be performed through use of validation operators.
Object:
id (integer)
integer (integer)
float (float)
isFloat (boolean)
Logic:
Rule:
[
{
isFloat: {
eq: true
},
integer: {
present: false
},
float: {
present: true
}
},
{
isFloat: {
eq: true
},
integer: {
present: false
},
float: {
present: true
}
}
]
###Example 4
Unwrap arrays to apply validation to each object in turn
Object:
id (integer)
name (string)
list ([{
name:
field1: true
}, {
field1: false
}])
Logic:
Rule:
[
{
isFloat: {
eq: true
},
integer: {
present: false
},
float: {
present: true
}
},
{
isFloat: {
eq: true
},
integer: {
present: false
},
float: {
present: true
}
}
]
Acknowledgements
This library was partially inspired by several other frameworks and validation libraries, which are fantastic in their own right, but did not quite meet my needs.
validatejs mongoosejs mongoose-validator validator.js
If you are looking for something more battle tested or widely adopted, then check them out.
License
The MIT License (MIT), Copyright (c) 2014 David Castro [email protected]
See LICENSE file for details