The*_*age 1 javascript mongoose mongodb node.js express
I\xe2\x80\x99m 尝试为 mongoose CastError创建错误处理函数。错误对象不包含指示错误类型的名称字段,因此我可以运行 if 语句来检查错误类型。猫鼬错误对象
\n我曾经遇到过同样的错误。
在猫鼬错误处理中间件中访问 err.name 返回未定义。
我发现 err.name 仅当您使用从 mongoose 返回的原始 err 对象时才有效。
如果您通过像这样解构来创建对象的副本:
let error = {...err};
Run Code Online (Sandbox Code Playgroud)
这不会包含 name 属性。作为修复,您可以执行以下操作:
let error = {...err, name: err.name};
Run Code Online (Sandbox Code Playgroud)
它应该有效。
我不知道为什么会发生这种情况,但如果有人知道,请告诉我!希望这对您有帮助。