使用AJKModel进行校验是需要声明一个schema,也就是用来校验的规则。 下面是一个简单的例子
let schema = {
name: {type: 'string', required: true,},
email: {type: 'string', required: true,},
address: {
street: {type: 'string', required: true,},
city: {type: 'string', required: true,}
},
};
这个就是申明一个schema规定了输入数据规则,这个schema规定输入数据必须满足
1:输入数据的字段只能在name,email,address,address.street,address.city中,不能出现其他字段
2:输入数据的字段必须满足schema中规定的条件,比如name类型必须是string,而且不可缺失
现在支持可填参数:
- number(纯数字的字符串/数字,整型)
- string(字符串)
- array 数组
- 1:arrayRules可以为空
- 2:数组里面的元素必须满足arrayRules,当数组是空数组的时候arrayRules的校验返回的是true
- required(是否必须存在,默认true,传入的值不是bool类型报错)
- min(传入最小值,min的参数只能是纯数字,inputObj对应字段的值可以是纯数字的字符串)
- max(传入最大值,max的参数只能是纯数字,inputObj对应字段的值可以是纯数字的字符串)
- allow(限定值只能是数组里面的值,所以传入allow的参数必须是数组)
- 比如: {a: allow:[1,2,3,4]}, 表示 a的值只能和[1,2,3,4]这个数组里面的元素相等
- allow传入的值不是数组会报错
- length 限定输入参数的长度,现在针对字符串和数组。 length传入参数是数组,只能输入两种情况:
- [?] :[?]表示规定长度,如[10],表示长度必须是10。
- [?, ?]:表示长度在一个范围内(闭区间);如[2,10]表示长度>=2 且 <= 10。
- ?表示>=0的整型数字
- applyFunction: 自定义校验函数
let schema = {
name: {type: 'string', required: true,},
email: {type: 'array', arrayRules : {type: string},
address: {
type: 'array',
arrayRules : {
street: {type: 'string', required: true,},
city: {type: 'string', required: false,}
}
},
};
这个schema里面email和address是数组
email中type表明这个字段是个数组,arrayRules表明这个数组元素的规则,email这种写法表明是email是由字符串组成的数组,数组成员是字符串
address的arrayRules表明数组里面的每个成员是object/Json,且每个成员必须都有street,但是city值可以为空
调用AJKModel的validate方法,将规定好的schema和传入的参数inputObj传入validate方法中
let res = AJKModel.validate(schema, inputObj)
返回结果res 是一个object有两个参数 code, message
当校验通过时 code = '100', message 没有
当校验发现不匹配时, code = '4000', message 是一个包含错误信息的字符串,通过JSON.parse解析后可以更清楚的看到那里有错
let AJKModel = require('../node_modules/@aijiakang/AJKModel');
let schema = {
name: {type: 'string', required: true,},
email: {type: 'string', required: true,},
address: {
street: {type: 'string', required: true,},
city: {type: 'string', required: true,}
},
};
let inputObj = {
name: '123',
email:'1231',
address:{
street: 'adsa',
city: 'BJ'
}
};
let res = AJKModel.validate(schema, inputObj);
res.code == 100 // ture