【问题标题】:Custom error message for loopback 4 model schema validation环回 4 模型模式验证的自定义错误消息
【发布时间】:2020-08-31 20:09:02
【问题描述】:

在我的模型中,我定义了一个模型架构。其中一个属性是名称,它是必填字段,最小字符长度应为 5。

  @property({
    type: 'string',
    required: true,
    jsonSchema: {
      title: 'name',
      minLength: 5,
      maxLength: 64,
    },
  })
  name: string;

但问题是,如果名称验证失败,我收到的错误消息是(即我传递的字符少于 5 个),

{
    "error": {
        "statusCode": 422,
        "name": "UnprocessableEntityError",
        "message": "should NOT be shorter than 5 characters"
    }
}

如何定义自定义错误消息?

【问题讨论】:

    标签: loopback4


    【解决方案1】:

    我在 loopback4 文档中发现,您可以在 jsonSchema 对象本身中定义客户错误消息。请在下面找到代码,

    @property({
       name: 'name',
       description: "The product's common name.",
       type: 'string',
       // Specify the JSON validation rules here
       jsonSchema: {
          maxLength: 30,
          minLength: 10,
          errorMessage: 'name must be at least 10 characters and maximum 30 characters',
       },
    })
    

    转到https://loopback.io/doc/en/lb4/Model.html#id-properties 并搜索部分,

    验证规则

    您将获得此属性来设置自定义错误消息。我检查了,它工作正常!

    谢谢!!

    【讨论】:

    • 感谢您的评论。并没有真正为我工作,但我会尝试更新我的 @loopback/rest 模块并再试一次。
    【解决方案2】:

    来自 LoopBack 团队的问候 ?

    我可以使用 LoopBack 的 Todo example app 重现您的场景。这是我看到的完整错误响应:

    {
      "error": {
        "statusCode": 422,
        "name": "UnprocessableEntityError",
        "message": "The request body is invalid. See error object `details` property for more info.",
        "code": "VALIDATION_FAILED",
        "details": [
          {
            "path": "/name",
            "code": "minLength",
            "message": "should NOT be shorter than 5 characters",
            "info": {
              "limit": 5
            }
          }
        ]
      }
    }
    

    如您所见,details 字段包含机器可读的信息,客户端可以使用这些信息来呈现人性化的错误消息:

    • path 字段指向未通过验证的(深层)属性 (name)。
    • code 字段包含违反的验证规则 (minLength)。
    • info.limit 提供有关验证规则的更多信息。

    您发布的错误消息对我来说并不熟悉。您是否在应用程序中配置了自定义错误处理程序(请参阅Handling errors in Sequence)?您是否正在使用旧版本的@loopback/rest?您能否将您的 LoopBack 依赖项更新到最新版本,看看是否会收到更多有用的错误消息?

    【讨论】:

    • 是的,我确实配置了自定义错误处理程序。这就是为什么我的回复中没有详细信息。
    • 我使用的是 1.5.1 版本的 loopback/rest 模块。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      相关资源
      最近更新 更多