嵌套验证中的hapi / joi描述性错误

时间:2019-09-17 04:02:40

标签: javascript joi

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

.d.ts

我收到此错误

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

然后,前端将无法通过错误消息味精知道。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

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?

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