每个验证选项的Joi自定义错误

时间:2019-03-01 19:37:06

标签: javascript node.js validation joi

我有Joi模式,并希望为每个选项指定自定义错误消息。

我的模式示例:

const schema = Joi.object().keys({
    name: Joi.string()
      .min(5).error(() => 'first message')
      .max(25).error(() => 'second message')
      .required().error(() => 'third message')
)}

此验证目前以这种方式起作用:如果任何选项无效,则仅显示第三条消息。

预期的行为-根据哪个选项无效显示错误消息(作为默认的Joi行为,但带有我的自定义错误消息)。

谢谢!

2 个答案:

答案 0 :(得分:2)

const schema = Joi.object().keys({
title: Joi.string()
  .min(5)
  .max(25)
  .required()
  .messages({
  "string.min": "first msg",
  "string.max": "second msg",
  "any.empty":"third msg"
      })
  })

这是显示自定义错误消息的最佳方法

答案 1 :(得分:0)

对于我的情况,我只是找到了这样的解决方案:

const schema = Joi.object().keys({
    title: Joi.string()
      .min(5)
      .max(25)
      .required()
      .error((errors) => {
        return errors.map(error => {
          switch (error.type) {
            case "string.min":
              return { message: "first msg" };
            case "string.max":
              return { message: "second msg" };
            case "any.empty":
              return { message: "third msg" };
          }
        }
        )
      })

似乎不是最好的代码,因为它会导致过多的代码,尤其是如果您使用的是大格式,则请按照我的期望进行工作。