README
smn-schema-validator
A package for objects validations using javascript.
(Works only with Node 7 or superior)
/* On your controller */
const params = {
companyName: 'SMN',
contributors: 100,
listOfContributors: ['smn1', 'smn2', 'smn3']
};
try {
scope.isValid(params);
}
catch (ex) {
// Error handling
}
/* On your scope */
const Scope = require('smn-schema-validator');
module.exports = {
isValid
};
async function isValid(params) {
const validation = {
companyName: {
required: true,
type: String,
maxLength: 40,
minLength: 6
},
contributors: {
required: true,
type: Number,
minNumber: 30,
maxNumber: 100
},
listOfContributors: {
required: true,
type: Array,
// here we tell the validator what type of data we are going to handle on this array
rules: {
type: String,
minLength: 4
}
}
};
try {
new Scope(params, validation, /* { status: 400 } optional */);
}
catch(ex) {
// error handling
}
}
Installation
$ npm install smn-schema-validator
How it works
- Validates each property of an object with specific settings.
Parameters
You should put those properties on your validation settings:
isEqual: 'value'
when you want to accept more than one value. e.g.:
const validation = {
name: {
isEqual: 'someone'
}
}
isEqual: ['value1', 'value2']
when you want to accept more than one value. e.g.:
const validation = {
name: {
isEqual: ['name1', 'name2']
}
}
isCpf: true
When it should be a valid CPF Or Cnpj. e.g.:
const validation = {
cpf: {
isCpf: true
}
}
const validation = {
cnpj: {
isCnpj: true
}
}
isEmail: true
When it should be a valid Email. e.g.:
const validation = {
email: {
isEmail: true
}
}
validation: [Array]
When the property is an Array of objects that each item should be also validated. e.g.:
const validation = {
users: {
type: Array
items: {
firstName: {
required: true,
type: String,
},
lastName: {
type: String
},
age: {
type: Number,
minNumber: 18,
maxNumber: 55
}
}
}
}
validation: [Object]
When the property is an Object that should also be validated. e.g.:
const validation = {
barbecue: {
items: {
peoples: {
required: true,
type: Array,
items: {
name: {
required: true,
type: String
},
age: {
required: true,
type: Number,
minNumber: 18,
maxNumber: 55
}
}
},
date: {
type: Date,
required: true
}
}
}
}
Custom Error Message
When you want custom error message. e.g.:
const validation = {
name: {
required: { value: true, message: 'Name not found' },
type: { value: String, message: 'Wrong type'}
}
}