Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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 (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-05-25T09:29:11.000Z (over 7 years ago)
- Last Synced: 2024-11-11T22:52:21.330Z (2 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
[![NPM](https://nodei.co/npm/validatez.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/validatez/)
![travis](https://travis-ci.org/sankooc/validatez.svg?branch=master)
![dm](https://img.shields.io/npm/dm/validatez.svg)
![version](https://img.shields.io/npm/v/validatez.svg)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); // passdata = {
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: '[email protected]',
}
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: '[email protected]',
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 |