[我会回答这个问题,但请随意添加解决方案或可能出现的其他问题]
在一个 Nodejs 项目中工作,我们大量使用 q Promise 和 mongoose,我发现将两者结合起来会出现一些不直观的问题。
第一个是 Mongoose promise 没有 .fail
或 .catch
。
另一个是Model.create返回一个 promise ,在解析时使用多个参数调用解析函数。如果这通过 Q,那么 Q 将仅使用第一个参数调用解析。
欢迎补充更多可能出现的问题;我会将我如何解决这些问题放在答案中。
最佳答案
您可以简单地使用Q
function将 Mongoose promise 转换到“适当的”Q 上 - 这实际上适用于每个 thenable。
所以只需使用
Q(someMongoosePromise) .then(…).catch(…);
<小时/>
Multiple arguments是一个不同的问题。然而,有一个非常简单的技巧:将它们转换为数组并使用它。
Q(Model.create([doc1,doc2]).then(Array)) .spread(function(d1, d2){ … });
(此解决方案不适用于 Model.create
返回单个数字的 promise 的情况)
关于javascript - Mongoose promise 和 Q promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28978485/