【问题标题】:Joi custom error for each validation option每个验证选项的 Joi 自定义错误
【发布时间】:2019-07-23 21:02:32
【问题描述】:

我有 Joi 架构并想为每个选项指定自定义错误消息。

我的架构示例:

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

目前,此验证以这种方式工作:如果任何选项无效,则只会出现第三条消息。

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

谢谢!

【问题讨论】:

    标签: javascript node.js validation joi


    【解决方案1】:
    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"
          })
      })
    

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

    【讨论】:

    • 这比公认的答案更好更干净。
    【解决方案2】:

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

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

    似乎不是最好的,因为它会导致太多代码,特别是如果你有很大的表格,但是它可以按我的意愿工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-12
      • 2020-09-13
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多