我目前正在尝试将Promises与Mongoose一起使用。 我已经读过,从4.1开始,添加了mPromise以及插入外部promises库(如bluebird或q)的能力。
我对基本承诺没有任何问题,只有需要然后才能捕获,当我尝试使用then
时,一个蓝鸟方法,我最终无法做到这一点,上述错误。这是一段代码:
finally
我也确保要求蓝鸟
mongoose.connect(uri, { useMongoClient: true, promiseLibrary: require('bluebird')})
.then(() => {
MyModel.find(query).exec()
.then(res => resolve(res)
.catch(err => reject(err))
.finally(() => {
mongoose.connection.close();
});
})
.catch(err => console.error(err));
为什么mongoose没有回归Bluebird承诺?
谢谢
答案 0 :(得分:1)
当然,经过几个小时的奋斗,我发布了SO并找到答案:) 感谢Anton Novik的回答 https://stackoverflow.com/a/42313136/8569785 在另一个线程中,我设法插入蓝鸟。
事实证明,项目中的一个文件有一个
var mongoose = require('mongoose');
mongoose.promise = require('bluebird');
接下来的几行后面的另一个作业被忽视:
mongoose.promise = global.Promise // Effectively assigning mongoose promise to the native implementation, oops !
删除作业后,确保每个猫鼬作业都是本地作品,现在已经解决了!