egg-validate 基于 parameter,
但是在两个官网上的对于引用类型并没有做详细说明,也,没有例子。怎么验证对象和数组呢?
只能扒开源码来看了,如图。
- 在源码的上方,就有了一堆类型,一眼就看到了
checkObject
和checkArray
,点进去看看。。
2.这个方法,啥都没做,就typeof了一下
,去看看validate
方法,但是这里有个判断,rule.rule
先留着
3.这个方法,先扫了一下。看到for...in
基本已经稳了,rules
是传进来的参数。然后一下就明白了。可以进行嵌套写法
一个例子:
验证
const errors = ctx.validate({
data: {
type: 'object',
rule: {
name: 'string',
portrait_url: { type: 'string', allowEmpty: true},
carousel_url: { type: 'string', allowEmpty: true},
birthTime: 'int',
summary: { type: 'string', allowEmpty: false},
desc: { type: 'string', allowEmpty: true}
}
}
}, {data: ctx.request.body});
数据:
{
"name": "sss",
"portrait_url": "",
"carousel_url": "",
"birthTime": 123123123123,
"summary": "xxxx的主题",
"desc": "酸奶代奥术大师大所大所大所多"
}
数组
数组的话需要 itemType
属性,然后就进行嵌套了
ctx.validate({
data: {
type: 'array',
itemType: {
type: 'object',
rule: {
title: { type: 'string', allowEmpty: false },
desc: { type: 'string', allowEmpty: false },
icon: { type: 'string', allowEmpty: false },
}
}
}
}, { data: data });