node-data-validator
Version:
Validate object data in JS based on a given data model
111 lines (99 loc) • 3.75 kB
Markdown
[](https://discord.gg/Qgv8DSMYM3)  [](https://github.com/SteffTek/Node-Data-Validator) [](https://github.com/SteffTek/Node-Data-Validator/issues) 
**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
```html
<script src="https://unpkg.com/node-data-validator@latest/Validator.js" type="text/javascript"></script>
```
with Common JS
```js
/* Import Validator */
const {Validator} = require("node-data-validator");
```
**or** - TypeScript Import
```js
/* Import Validator */
import {Validator} from "node-data-validator";
```
```js
/*
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
```js
/* Import Validator */
const {Validator, DetailedValue} = require("node-data-validator");
```
**or** - TypeScript Import
```js
/* Import Validator */
import {Validator, DetailedValue} from "node-data-validator";
```
Then specify your model as following:
```js
// 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.