https://github.com/sankooc/validatez
object validation for node
https://github.com/sankooc/validatez
data validate
Last synced: about 1 month ago
JSON representation
object validation for node
- Host: GitHub
- URL: https://github.com/sankooc/validatez
- Owner: sankooc
- License: mit
- Created: 2016-12-05T17:11:37.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-05-25T09:29:11.000Z (about 9 years ago)
- Last Synced: 2025-10-09T19:38:22.006Z (9 months ago)
- Topics: data, validate
- Language: JavaScript
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# validatez
[](https://nodei.co/npm/validatez/)



simple way to validate object
## install
`$ npm install validatez`
## base usage
```
const creator = require('validatez');
const schema = {
name: {
type: String,
errMessage: (type, val) =>
`error occur ${type}-${val}`
,
},
age: {
type: Number,
range: [1, 100],
errMessage: 'age incorrect',
required: false,
},
};
const validator = creator.create(schema);
let data = {
name: 'atom',
}
validator(data); // pass
data = {
name: 'atom',
age: 200,
}
validator(data); // throw exception
```
## type refer
```
const schema = {
address: {
type: String,
pattern: /^\w{10}$/,
},
address2: {
type: '&address', // & + field to refer existed schema
},
};
const validator = validate.create(schema);
let data = {
address: 'china beijing bejing',
address2: 'bejing chaoyangqu chaoyangbeilu',
}
validator(data); // pass
```
## buildin types
all buildin type start with `@`
```
const schema = {
email: {
type: '@email',
},
};
const validator = validate.create(schema);
let data = {
email: 'sankooc@scd.com',
}
validator(data); // pass
```
all buildin types [HERE](doc/types.md)
if you need more buildin types, create [ISSUE](https://github.com/sankooc/validatez/issues/new)
also you can define or override buildin type
```
validate.register({
code: {
type: String,
pattern: /^\d{16}$/,
}
})
const schema = {
zcode: {
type: '@code'
},
};
validator = validate.create(schema);
data = {
zcode: '1234123412341234',
};
validator(data); //pass
```
## simple define
```
const schema = {
email: '@email',
name: String,
};
const validator = validate.create(schema);
let data = {
email: 'sankooc@scd.com',
name: 'sankooc',
}
validator(data); // pass
```
## simple inject for control flow
### if your code managed by `Promise` your code will be like below
```
function process(data){
// next
}
getSomeData().then(process)
```
### add data validation
```
const schema = {
address: {
type: String,
},
};
const option = {
errorType: Promise,
}
const validator = validate.create(schema, option);
getSomeData().then(validator).then(process)
```
### if your code managed by `async` your code will be like below
```
function process(data, callback){
// next
}
async.waterfall([getSomeData, process],callback);
```
### add data validation
```
const schema = {
address: {
type: String,
},
};
const option = {
errorType: Function,
}
const validator = validate.create(schema, option);
async.waterfall([getSomeData, validator, process],callback);
```
## support string case
```
const schema = {
userName: {
type: String,
},
};
const option = {
field: 'snake' // snake, camel, kebab
}
const validator = validate.create(schema, option);
let data = {
user_name: 'atom',
}
validator(data); // pass
```
## schema option
| key | type |default value| desc |
|-----------|---------------|-------------|------------------------------|
| type |string/function|String | |
| required |boolean |false | |
| errMessage|string/function|`error param`| error message |
| range |array | | enable when type is `Number` |
| pattern |regex | | enable when type is `String` |
## valiate option
| key |type |default value | desc |
|---------|--------|--------|------------------------|
|handle |string |`error` | 'error'/'promise'/'callback' |
|field |string |`strict`| snake/camel/kebab |