【发布时间】:2017-03-25 21:28:33
【问题描述】:
我一直在阅读文档和文章,每个人似乎都以不同的方式描述了一起使用 Mongoose 和 Bluebird 的方式。甚至官方的 Mongoose 文档 says something 和 Bluebird 文档都说 another thing。
根据猫鼬:
mongoose.Promise = require('bluebird');
根据蓝鸟:
var Promise = require("bluebird");
Promise.promisifyAll(require("mongoose"));
因此,据我了解,如果您选择 Mongoose 方式,示例查询将如下所示:
User.findById('someId')
.then(function(){
// do stuff
})
.catch(function(err){
// handle error
})
但在 Mongoose 文档中也是这样说的:
Mongoose 查询不是承诺。但是,它们确实有一个用于 yield 和 async/await 的 .then() 函数。如果您需要一个成熟的承诺,请使用 .exec() 函数。
那么在这种情况下,.then 是否高于承诺?
如果你选择蓝鸟方式:
User.findById('someId')
.execAsync()
.then(function(){
// do stuff
})
.catch(function(err){
// handle error
})
或者甚至可以跳过execAsync() 并以findByIdAsync 开头。
真的与不同的文档混淆了。如果有人能对此有所了解,我将不胜感激。
【问题讨论】: