环回3放弃多个validation错误的错误信息,将422转换为500,我该如何解决?

我正在从Loopback 2 tot 3迁移。

我目前有一个validation错误和强大的error handling程序的问题

当我发布导致多个validation错误的批量创build时,那些返回为ValidationErrors数组。 这些错误被500强内部服务器错误中的强error handling程序分组,但是当debugging设置为false时,错误的详细信息将被丢弃。

在我的例子中,我上传了一个标签数组,但是对于每个标签,唯一性validation被执行。 当数据库中已经有2个或更多标记时,我有一个错误数组,而不是一个validation错误

我需要一种方法来确定为什么在客户端validation失败,但错误的细节现在被丢弃。

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

从loopback中的stronglooperror handling程序文档中,

在生产模式下,强大的error handling程序会忽略来自错误响应的细节,以防止泄漏敏感信息:

更多信息

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

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

没有这是预期的行为

安全错误字段

您可以将堆栈跟踪设置为“安全错误字段”,以便在生产中显示。 例如,如果在生产模式下运行环回,则默认情况下不会显示stack字段。 如果您仍想显示堆栈字段,则更改server/middleware.json的config json

 "final:after": { "strong-error-handler": { "params": { "safeFields": ["stack"] } } }