javascript - Mongoose promise 和 Q promise

标签 javascript node.js mongoose promise q

[我会回答这个问题,但请随意添加解决方案或可能出现的其他问题]

在一个 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/

相关文章:

javascript - 在单独的作用域内调用 super 方法

node.js - 无法在设备上安装应用程序,react-native

javascript - Mongoose 的行为和模式

php - 如何消除php中表单中的空格

javascript - jQuery-UI 可排序/可删除

javascript - 如何通过点击事件与 Node.js 服务器通信?

node.js - 暗 Mongoose 魔法 : "Invalid argument to findOne"

collections - 你如何使用 Mongoose 创建一个有上限的集合?

javascript - CckEditor - 未捕获类型错误 : Cannot read property 'getSelection' of undefined

javascript - node js中的面向对象编程