Loopback 3丢弃多个验证错误的错误信息,转为422到500,我该如何解决?

时间:2017-06-03 07:40:53

标签: node.js loopbackjs

我从Loopback 2 tot 3迁移。

我目前遇到验证错误和强错误处理程序

的问题

当我发布导致多个验证错误的批量创建时,那些将作为ValidationErrors数组返回。 这些错误在500内部服务器错误中由强错误处理程序分组,这是以前的错误,但是当debug设置为false时,错误的详细信息将被丢弃。

在我的示例中,我上传了一系列标签,但是对于每个标签,都会执行唯一性验证。当数据库中已有2个或更多标签时,我有一系列错误,而不是一个验证错误

我需要一种方法来确定验证在客户端失败的原因,但现在将丢弃错误的详细信息。

我在这里做错了什么,或者这应该被视为一个错误?

1 个答案:

答案 0 :(得分:1)

来自环回的strongloop error handler文档,

  

在生产模式下,强错误处理程序会忽略错误响应中的详细信息,以防止泄漏敏感信息:

更多信息

  • 对于5xx错误,输出仅包含HTTP规范中的状态代码和状态名称。
  • 对于4xx错误,输出包含完整错误消息(error.message)以及ValidationError通常用于提供有关验证问题的机器可读详细信息的详细信息属性(error.details)的内容。它还包括error.code,允许传递机器可读的错误代码,例如,用于翻译。
  

我在这里做错了什么,或者这应该被视为一个错误?

这不是预期的行为

安全错误字段

您可以设置stack trace as "safe-error-field",以便在生产中显示。 例如,如果在生产模式下运行环回,则默认情况下不会显示stack字段。 如果您仍想显示堆栈字段,请更改server/middleware.json

中的配置json
"final:after": {
    "strong-error-handler": {
      "params": {
        "safeFields": ["stack"]
     }
   }
 }