【发布时间】:2018-12-27 16:42:15
【问题描述】:
从异步Mongoose middleware post hook 抛出错误的正确方法是什么?
代码示例
以下 TypeScript 代码使用 mongoose 的 post init 事件来运行一些检查,这些检查在函数从 mongoDb 检索文档时触发。此示例中的 postInit() 函数正在执行一些背景检查。它应该在某些情况下失败,然后返回Promise.reject('Error!');
schema.post('init', function (this: Query<any>, doc: any) {
return instance.postInit(this, doc)
.catch( err => {
return err;
});
});
钩子工作正常。 IE。以下代码触发了钩子:
MyMongooseModel.findOne({ _id : doc.id}, (err, o : any) => {
console.log(o);
});
但是,如果postInit() 失败,则不会将错误传递回调用函数。而是返回文档。
预期行为
我正在寻找将此错误传递给调用函数的正确方法。如果背景检查失败,则调用函数不应取回文档。
我尝试了不同的方法来引发此错误。例如。 throw new Error('Error');。但是,这会导致 UnhandledPromiseRejectionWarning 并仍然返回文档。
【问题讨论】:
标签: javascript node.js mongodb typescript mongoose