egg-validate和 parameter 数组,对象验证问题

egg-validate 基于 parameter,

但是在两个官网上的对于引用类型并没有做详细说明,也,没有例子。怎么验证对象和数组呢?

只能扒开源码来看了,如图。

  1. 在源码的上方,就有了一堆类型,一眼就看到了checkObjectcheckArray,点进去看看。。

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 });

posted @ 2021-04-05 16:09  古月大叔  阅读(787)  评论(1编辑  收藏  举报