new NumberNode(){NumberNode}
The NumberNode class represents a value that can be anything
Returns:
NumberNode instance.Methods
-
addCustomValidator(node){NumberNode}
-
Add a custom object validator
Name Type Description node
CustomNode custom validation node to be used for this field validation
Example
// Create a Custom validator assert = require('assert'), Compiler = require('vitesse').Compiler, NumberNode = require('vitesse').NumberNode, CustomNode = require('../lib/custom'); var customValidator = new CustomNode() .setContext({divisibleBy: 10}) .setValidator(function(object, context) { if((object % context.divisibleBy) != 0) { return new Error('number not divisible by ' + context.divisibleBy); } }); var schema = new NumberNode(null, null, {typeCheck:true}) .addCustomValidator(customValidator); var compiler = new Compiler({}); // Compile the AST var func = compiler.compile(schema, {}); // Validate {} var results = func.validate({}); assert.equal(1, results.length); assert.equal('field is not a number', results[0].message); assert.deepEqual(['object'], results[0].path); assert.ok(results[0].rule === schema); // Validate '' var results = func.validate(7); assert.equal(1, results.length); assert.equal('number not divisible by 10', results[0].message); assert.deepEqual(['object'], results[0].path); assert.ok(results[0].rule === customValidator); // Validate string 'xxxxxx' var results = func.validate(10); assert.equal(0, results.length);
-
addValidation(validation){NumberNode}
-
Add a validation language node, valid nodes are
$gt
greater than{$gt: 5}
$gte
greater or equal to{$gte: 10}
$lt
less than{$lt: 5}
$lte
less or equal to{$lte: 5}
$in
string must be in provided values{$in: ['dog', 'cat', 'hamster']}
$multipleOf
number must be a multiple of the value{$multipleOf: 5}
Name Type Description validation
object validation operation valid ones are $gt,$gte,$lt,$lte,$multipleOf,$in
Example
// Create a NumberNode validator for integers greater or equal to 5 // and less or equal to 100. assert = require('assert'), Compiler = require('vitesse').Compiler, NumberNode = require('vitesse').NumberNode; var schema = new NumberNode(null, null, {typeCheck:true}) .addValidation({$gte: 5, $lte: 100}); var compiler = new Compiler({}); // Compile the AST var func = compiler.compile(schema, {}); // Validate {} var results = func.validate({}); assert.equal(1, results.length); assert.equal('field is not a number', results[0].message); assert.deepEqual(['object'], results[0].path); assert.ok(results[0].rule === schema); // Validate '' var results = func.validate(1); assert.equal(1, results.length); assert.equal('number fails validation {"$gte":5,"$lte":100}', results[0].message); assert.deepEqual(['object'], results[0].path); assert.ok(results[0].rule === schema); // Validate string 'xxxxxx' var results = func.validate(10); assert.equal(0, results.length);
-
generate(context)
-
Generate the code for this node
Name Type Description context
object the generation context for this node
-
path(){array}
-
Return the current object path
Returns:
array containing the path to this node
-
setTypeCheck(typeCheck){NumberNode}
-
Type check value
Name Type Description typeCheck
boolean type check value