sd-defender
sd-defender
是一个参数校验器
安装:
npm install sd-defender
它的输入是:
- 一个参数对象(在
express
中通常是req.query
或req.body
) - 一个校验规则对象,其中包含了参数名称和对应校验规则的描述关系
它的输出是:校验结果(一个数组,数组里存放校验不通过的参数信息;如所有参数都校验通过,则为空数组)
例如:
const V = let params = name: 'jarone' age: '18' let schema = mobile: 'required|numeric' name : 'max:10|min:1' age : 'numeric' let invalidMsg = console; /*[ { paramName: 'mobile', value: undefined, invalid: '必须传递mobile' }]*/
sd-defender
输出的校验结果中默认展示中文,如需展示英文,则需要在调用时传递第 3
个参数,值为 en
:
const V = let params = name: 'jarone' age: '18' let schema = mobile: 'required|numeric' name : 'max:10|min:1' age : 'numeric' let invalidMsg = console; /*[ { paramName: 'mobile', value: undefined, invalid: 'mobile is required.' }]*/
sd-defender
默认情况下只返回第一个不合格参数的校验结果
如需返回所有不合格参数的校验结果,需要在调用时传递第 4
个参数,值为 true
:
const V = let params = name: 'jarone' age: '18' let schema = mobile: 'required|numeric' name : 'max:5|min:1' age : 'numeric' let invalidMsg = console; /*[ { 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 = let params = name: 'luy' let schema = name: 'isJarone' let extRules = val === 'jarone' let extInvalidMsg = ` is not jarone, given.` let invalidMsg = console; /*[ { 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'