环回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"] } } }