简体   繁体   English

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

[英]Joi error message for nested array of object

I have this user input from client side, I'm doing backend validation using Joi. 我从客户端获得了此用户输入,我正在使用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);

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

I got error of 我有错误

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]]]]]]]]

by Joi. 由Joi。 I don't wish to supply custom error msg but Joi should giv me something like id should be in string not number 我不希望提供自定义错误消息,但Joi应该给我一些类似id should be in string not number

Just provide an error function in the chain while defining your schema. 在定义模式时,只需在链中提供一个错误函数即可。

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