sd-defender
v1.0.1
Published
a validator for params
Downloads
4
Readme
sd-defender
sd-defender
是一个参数校验器
安装:
npm install sd-defender
它的输入是:
- 一个参数对象(在
express
中通常是req.query
或req.body
) - 一个校验规则对象,其中包含了参数名称和对应校验规则的描述关系
它的输出是:校验结果(一个数组,数组里存放校验不通过的参数信息;如所有参数都校验通过,则为空数组)
例如:
const V = require('sd-defender')
let params = {
name: 'jarone',
age: '18'
}
let schema = {
mobile: 'required|numeric',
name : 'max:10|min:1',
age : 'numeric'
}
let invalidMsg = V(params, schema)
console.log(invalidMsg);
/*
[
{
paramName: 'mobile',
value: undefined,
invalid: '必须传递mobile'
}
]
*/
sd-defender
输出的校验结果中默认展示中文,如需展示英文,则需要在调用时传递第 3
个参数,值为 en
:
const V = require('sd-defender')
let params = {
name: 'jarone',
age: '18'
}
let schema = {
mobile: 'required|numeric',
name : 'max:10|min:1',
age : 'numeric'
}
let invalidMsg = V(params, schema, 'en')
console.log(invalidMsg);
/*
[
{
paramName: 'mobile',
value: undefined,
invalid: 'mobile is required.'
}
]
*/
sd-defender
默认情况下只返回第一个不合格参数的校验结果
如需返回所有不合格参数的校验结果,需要在调用时传递第 4
个参数,值为 true
:
const V = require('sd-defender')
let params = {
name: 'jarone',
age: '18'
}
let schema = {
mobile: 'required|numeric',
name : 'max:5|min:1',
age : 'numeric'
}
let invalidMsg = V(params, schema, 'en', true)
console.log(invalidMsg);
/*
[
{
paramName: 'mobile',
value: undefined,
invalid: 'mobile is required.'
},
{
paramName: 'name',
value: 'jarone',
invalid: 'name can not gt 5. jarone given.'
}
]
*/
sd-defender
支持扩展自定义校验规则
如需添加自定义校验规则,请在调用时传递第 5
和 第 6
个参数:
const V = require('sd-defender')
let params = {name: 'luy'}
let schema = {name: 'isJarone'}
let extRules = {isJarone: (val) => val === 'jarone'}
let extInvalidMsg = {
isJarone: (paramName, val) => `${paramName} is not jarone, ${val} given.`
}
let invalidMsg = V(params, schema, 'en', true, extRules, extInvalidMsg)
console.log(invalidMsg);
/*
[
{
paramName: 'name',
value: 'luy',
invalid: 'name is not jarone, luy given.'
}
]
*/
sd-defender
默认提供了如下校验规则:
required
要求参数必传,如参数未传递,或值为:undefined
、null
、NaN
、空字符串、空数组、空对象,则判定为校验失败requiredWithOut
允许传入一组参数名单,如参数名单中的任何一项不存在时(是否存在的判定规则参考required
),则当前参数必传bool
要求参数值为布尔类型numeric
要求参数值为数字类型,允许整型和浮点型array
要求参数值为数组类型max
要求参数值或参数值的长度的上限;如参数值是数字类型,则判定其值;如参数值是数组或字符串类型,则判定其长度(也就是 length);闭合区间(包含设置值)min
要求参数值或参数值的长度的下限;如参数值是数字类型,则判定其值;如参数值是数组或字符串类型,则判定其长度(也就是 length);闭合区间(包含设置值)dateGt
要求日期类型参数值的下限(不包含下限值)dateLt
要求日期类型参数值的上限(不包含上限值)dateGte
要求日期类型参数值的下限(包含下限值)dateLte
要求日期类型参数值的上限(包含上限值)
sd-defender
校验规则语法:
sd-defender
参考了 Laravel
的校验语法,使用 |
分割不同的校验规则,例如:
{
name: 'required|min:5|max:10'
}