0.3.0 • Published 4 years ago
gateman v0.3.0
Gateman
Simple and easiest JSON validator
Documentation
see docs.md
Installation
npm install gateman
Basic Usage
var gateman=require('gateman');
var validate=gateman({
name:"string|minlength:5|required",
age:"number|required",
dob:"date",
password:"required|minlength:4",
confirm_password:"same:password",
address:{
country:"string",
city:"string|required",
},
tags:["string|$maxcount:2"]
});
var err=validate({
name:"Koushik",
age:28,
dob:"1990-04-01",
address:{
country:"India"
},
password:"abcd",
confirm_password:"abcd",
tags:["javascript","json"]
});
if(!err) console.log("Valid");
else console.log(err);
Rules
Rule | Description | Param Type | Example |
---|---|---|---|
string | String type check | { name: "string" } | |
number | Number type check | { age: "number" } | |
date | Date or not | { dob: "date" } | |
Email or not | { email: "email" } | ||
required | Value given or not | { address: "required" } | |
requiredif | Required if another field is given | string | { city: "string", address: "string | requiredif: city" } |
min | Minimum value check | number | { price: "min:100" } |
max | Maximum value check | number | { price: "max:1000" } |
minlength | Minimum length check | number | { password: "minlength:5" } |
maxlength | Maximum length check | number | { description: "maxlength:200" } |
digit | Number of digit check | number | { pincode: ["digit:6"] } |
mindigit | Minimum number of digit check | number | { amount: ["mindigit:3"] } |
maxdigit | Maximum number of digit check | number | { amount: ["maxdigit:6"] } |
uppercase | All characters are uppercase or not | { name: "uppercase" } | |
lowercase | All characters are lowercase or not | { name: "lowercase" } | |
same | Value to be same as other field | string | { password: "minlength:5", confirm_password: "same:password" } |
accepted | Value to be truthy(eg. true or 1 ) | { terms: "accepted" } | |
range | Value between 2 numbers(inclusive) | { price: "range : 100 : 200" } |
Array Rules
Array rules operate on whole array and are prefixed with $
symbol.
Rule | Description | Param Type | Example |
---|---|---|---|
required | Atleast one array item is required | { address: ["$required"] } | |
count | Array length check | number | { tags: ["$count:2"]} |
mincount | Minimum array length check | number | { tags: ["$mincount:2"] } |
maxcount | Maximum array length check | number | { tags: ["$maxcount:2"] } |
Using array rules in keys
{
favourites:[
{
"$mincount": 2,
"$maxcount": 10,
rating:"number | required"
}
]
}
a valid json with respect to the above schema would be
{
favourites:[
{
rating: 44
},{
rating: 22
}
]
}
Using with expressjs
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
var gateman = require('gateman');
//the following higher order function creates expressjs middleware
var validate = (schema, customMessages, customValidators)=>{
var validatorFn = gateman(schema, customMessages, customValidators);
return (req,res,next)=>{
req.errors = validatorFn(req.body,{flatten:true});
next();
}
}
//use the middleware
app.post('/demo', validate({
email:"email|required",
location:"string|required|minlength:10"
}), (req, res) => {
if(req.errors){
return res.status(422).json({
success: false,
error: req.errors
});
}
res.json({
success:true,
data:req.body
});
});
app.listen(8080, () => {
console.log(name + ' is live at 8080');
});