node-validator-tool
v1.1.2
Published
Simple module for data validation
Downloads
23
Readme
Config module
Simple module for data validation. It is a standalone piece of code that does not require any other node modules.
Installation
In your project folder run:
npm install --save node-validator-tool
Note: The module code uses few ES6 features, so at least 4.4.5 version of Node is required.
Usage
First you need to include the module and optionally configure it.
const validator = require("node-validator-tool").create();
Require the module and call create
factory function with no argument.
If the rules
parameter is passed, the validator tries to add custom validation rules (see below).
const userValidator = require('node-validator-tool').create({
"name_length": (name) => name.length > 3, // lambda
"name_format": /^[A-Z][a-z]+$/, // RegExp
});
As you can see, the validation rule has a name and a validator Function, RegExp or String "named validator". Any other type causes an Error to be thrown. Validator module supports few validation rules called named validators by default (see the source).
Using the validator module is simple:
userValidator.addRule("adult", (age) => age > 18); // adding new rule
userValidator.hasRule("adult"); // true
userValidator.validate(17, "adult"); // false
userValidator.validate(17, "number"); // true, using default named validation rule
userValidator.removeRule("adult") // removing rule on-the-fly
Validator module can be used to validate not only single values, but whole objects too. Just initialize the module with a dictionary of rules that corresponds to tested object properties.
const validator = require('node-validator-tool').create({
"name": "text",
"age": (age) => age > 18,
"social.nick": /^[A-Z][a-z]+$/, // object travsersing
"local.id": "number"
});
const user = {
"name": "Jon",
"age": 15,
"social": {
"nick": "Jonaz"
},
"local.id": 112
};
const result = validator.validateAll(user);
const errors = validator.hasErrors() ? validator.getErrors() : null;
Issues
Since the github repo is not ready yet, please use my email address in profile to contact me. Cheers!