有什么方法可以从createConnection
返回一个承诺,所以我不必使用听众
我正在使用Bluebird作承诺。
我想使用.then()
和.catch()
而不是听众.on('error', callback)
和.on('open', callback)
这是我初始化连接的方式
_initConnection(connectionSettings){
Mongoose.Promise = Bluebird;
this.connection = Mongoose.createConnection(connectionSettings);
}
查看promisification页面。来自文档:
Promisification意味着将现有的promise-unaware API转换为promise-returns 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
Mongoose.connect返回一个承诺。沿着这些方向,最近还有一个可能有用的npm包:mongoose-connection-promise
Mongoose 5支持createConnection
方法的承诺,但有一些警告。
至于
mongoose.createConnection()
,mongoose仍然支持使用mongoose.createConnection()
的返回值作为承诺或连接。
// Works
mongoose.createConnection().then(conn => conn.model('Test', schema));
有关警告,请查看文章。
资料来源:https://thecodebarbarian.com/whats-new-in-mongoose-5-improved-connections