繁体   English   中英

嵌套对象数组的Joi错误消息

[英]Joi error message for nested array of object

我从客户端获得了此用户输入,我正在使用Joi进行后端验证。

const Joi = require("joi")

const schema = Joi.array().items(
    Joi.object().required().keys({
      name: 'filter_list',
      value: Joi.array().items(

        Joi.object().required().keys({
          id: 'popular_filters',
          value: Joi.array().required().items(

            Joi.object().required().keys({
              id: Joi.string().required(),
              name: Joi.string().required(),
              items: Joi.array().items(

                Joi.object().keys({
                  id: Joi.string().required(),
                  name: Joi.string().required()
                })

              )
            })

          )
        })
      )
    })
);

// Return result.
const result = Joi.validate([
    {
        name: 'filter_list',
        value: [{
          id: 'popular_filters',
          value: [{
            id: '1',
            name: 'Gym',
            items: [{
              id: 1, // bad error msg
              name: 'x'
            }]
          }]
        }]
      }
], schema);

console.log('error: ', result.error);

演示: https : //runkit.com/eldyvoon/5d7b59184bd7b300144a2730

我有错误

Error: "value" at position 0 fails because [child "value" fails because ["value" at position 0 fails because [child "value" fails because ["value" at position 0 fails because [child "items" fails because ["items" at position 0 fails because [child "id" fails because ["id" must be a string]]]]]]]]

由Joi。 我不希望提供自定义错误消息,但Joi应该给我一些类似id should be in string not number

在定义模式时,只需在链中提供一个错误函数即可。

Joi.object().keys({
  id: Joi.string().required().error(new Error('id should be in string not number')),
  name: Joi.string().required()
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM