【发布时间】:2019-01-09 09:14:47
【问题描述】:
是否可以在 Mongoose 保存后挂钩中捕获并忽略错误,从而从文档 save 调用成功返回(分别是已解决的承诺)?
示例代码:
schema.post('save', function postSave(err, doc, next) {
if (err.name === 'MongoError' && err.code === 12345) {
// this does not work the way I'd expect it to
return next();
}
return next(err);
});
上面的钩子仍然导致save 调用失败并出现原始错误(next(null) 也无济于事)。我可以通过将自定义错误传递给next 来替换错误,这表明该机制通常可以正常工作,但这对我没有帮助。
Mongoose middleware docs 包含一个非常相似的示例(请参阅底部附近的“错误处理中间件”部分),但并未真正解释 next 回调的预期行为。
就上下文而言,我在实际项目中尝试完成的是一个保存后中间件挂钩,当遇到重复键错误时会重试保存调用。
【问题讨论】: