【问题标题】:hapi/joi descriptive error in nested validation嵌套验证中的 hapi/joi 描述性错误
【发布时间】:2020-01-17 21:37:06
【问题描述】:

我正在尝试使用https://github.com/hapijs/joi 进行对象验证的嵌套数组,我的代码如下(游乐场here

const Joi = require("@hapi/joi")

const schema = Joi.array().required().items(
        Joi.object().required().keys({
            name: 'room_range',
            value: Joi.object({
                min: Joi.number().required(),
                max: Joi.number().min(Joi.ref('min')).required()
            })
        }),

        Joi.object().required().keys({
            name: 'anything',
            value: Joi.object({
                min: Joi.number().required(),
                max: Joi.number().min(Joi.ref('min')).required() 
            })
        }),
    )

const result = schema.validate([
    {
        name: 'room_range',
        value: {
         min: 'dddd',
         max: 2
        }
      },{
       name: 'anything',
       value: {
         min: 1,
         max: 2
       }
      }
]);

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

我收到了这个错误

exports.ValidationError: "value" does not contain 1 required value(s)

那么前端将无法通过错误消息知道。

【问题讨论】:

    标签: javascript joi


    【解决方案1】:

    你可以试试这个:

    value: Joi.object({
      min: Joi.number().required().error(() => 'error message here'),
      max: Joi.number().min(Joi.ref('min')).required().error(() => 'error message here'),
    }),
    

    如果您需要在对象或数组上显示错误消息,您应该能够在对象上执行相同的操作。

    value: Joi.object({
      min: Joi.number().required(),
      max: Joi.number().min(Joi.ref('min')).required(),
    }).required().error(() => 'error message here'),
    

    'error()' 接受错误实例或函数。 https://hapi.dev/family/joi/?v=16.1.4#anyerrorerr

    也许您可以在这里找到更多有用的信息: Node.js + Joi how to display a custom error messages?

    希望这会有所帮助,因为我不确定您的要求。

    【讨论】:

      猜你喜欢
      • 2015-04-29
      • 2018-07-25
      • 2016-02-19
      • 2018-09-24
      • 1970-01-01
      • 2013-10-19
      • 2019-05-05
      • 2019-10-10
      • 1970-01-01
      相关资源
      最近更新 更多