我是否有某种方式可以从createConnection
返回承诺,因此我不必使用听众
我使用Bluebird作承诺。
我想使用.then()
和.catch()
代替听众.on('error', callback)
和.on('open', callback)
这是我初始化连接的方式
_initConnection(connectionSettings){
Mongoose.Promise = Bluebird;
this.connection = Mongoose.createConnection(connectionSettings);
}
答案 0 :(得分:0)
查看promisification上的页面。来自文档:
Promisification意味着将现有的promise-unaware API转换为承诺返回API。
在节点中使用promises的常用方法是Promise.promisifyAll一些API并开始专门调用promise方法的promise返回版本。
具体做法是:
var Promise = require("bluebird");
Promise.promisifyAll(require("mongoose"));
希望这有帮助!
编辑:
请注意,这可能是自4.4.0(changelog)
以来另外,设置mongoose的内部promise库以使用bluebird,如下所示:
mongoose.Promise = require('bluebird');
编辑2:
另请注意,您必须使用mongoose.connect()
cf
答案 1 :(得分:0)
Mongoose.connect返回一个承诺。沿着这些方向,最近还有一个可能有用的npm包:mongoose-connection-promise
答案 2 :(得分:0)
猫鼬5支持createConnection
方法上的诺言,但有一些警告。
对于
mongoose.createConnection()
,猫鼬仍然支持将mongoose.createConnection()
的返回值用作承诺或连接。
// Works
mongoose.createConnection().then(conn => conn.model('Test', schema));
有关警告,请查看文章。
来源:https://thecodebarbarian.com/whats-new-in-mongoose-5-improved-connections