Validate JavaScript objects based on an given model recursively.
This Data Validator was created out of necessity to validate received objects against an given data model on a websocket server, but it can be used to compare any data. You can specify data models with details like min- or max-size and more.
- Introducing: DetailedValues - specify exactly what you need. Read further to learn more.
- Now deep searching arrays is possible.
NodeJS Installation
npm i node-data-validator
or - script tag for the browser
<script src="https://unpkg.com/node-data-validator@latest/Validator.js" type="text/javascript"></script>
with Common JS
/* Import Validator */
const {Validator} = require("node-data-validator");
or - TypeScript Import
/* Import Validator */
import {Validator} from "node-data-validator";
/*
IMPORTS
*/
const {Validator} = require("./Validator");
// Create test data
const input = {
name: 'John',
age: 23,
email: "john@example.com",
address: {
street: "Main Street",
city: "New York",
zip: 24654
},
userIDs: [128923891, 238923, 234324, 234234, 23623456]
}
// Create model
const model = {
name: String,
age: Number,
email: String,
address: {
street: String,
city: String,
zip: Number
},
userIDs: [Number],
}
// Output result
console.log(Validator(input, model));
Working with DetailedValues is exactly as working with primitives. Firstly, import DetailedValues together with the Validator Function. with Common JS
/* Import Validator */
const {Validator, DetailedValue} = require("node-data-validator");
or - TypeScript Import
/* Import Validator */
import {Validator, DetailedValue} from "node-data-validator";
Then specify your model as following:
// Create model
const model = {
name: new DetailedValue(String, {required: true, min: 4}),
age: Number,
email: String,
address: {
street: String,
city: String,
zip: Number
},
userIDs: [Number],
}
You can use the Type declaration in the DetailedValue exactly like the rest of the model, so things like [[Number]]
and other shinanigans work fine.
A DetailedValue has the following options:
Option | Type | Description | Values | Default |
---|---|---|---|---|
required | boolean | Is the value required? | true or false |
true |
min | number | Min length of the value. | Number |
null |
max | number | Max length of the value. | Number |
null |
isEmail | boolean | Validate if the value is an email. | true or false |
false |
If you specify an array like userIDs: [Number]
only the first data type - in this case Number
- will be verified against the data array.