mongoose4.11.0承诺超时

我正在使用mongoose和蓝鸟。 该设置是通过书,并正在使用useMongoClient选项,通知要求。

 Mongoose.connect(myConnectionString, {useMongoClient: true}); 

然而没有我使用的承诺执行。

 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/starbucks', { useMongoClient: true }); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('openUri', function() { // we're connected! }); 

我已经使用这个代码的最新版本,警告已经消失。 请尝试一下。 或者使用旧版本。

我发现这可能是一个mongoose的错误

滚回mongoose版本后问题就消失了

 npm uninstall -save mongoose npm install -save mongoose@4.10.8 

或者你可以删除useMongoClient选项Mongoose.connect(connectionString); ,并忽略该消息

DeprecationWarning: open()在mongoose> = 4.11.0中不推荐使用,而是使用openUri() ,或者在使用connect()createConnection()设置useMongoClient选项

https://github.com/Automattic/mongoose/blob/master/History.md显示

希望这可以帮助别人

此代码解决了所有弃用警告:

 mongoose.Promise = global.Promise; mongoose.connect(uri, { keepAlive: true, reconnectTries: Number.MAX_VALUE, useMongoClient: true }); 

例如:const mongoose = require(“mongoose”);

 module.exports.connect = uri => { mongoose.connect(uri, { keepAlive: true, reconnectTries: Number.MAX_VALUE, useMongoClient: true }); // plug in the promise library: mongoose.Promise = global.Promise; mongoose.connection.on("error", err => { console.error(`Mongoose connection error: ${err}`); process.exit(1); }); // load models require("./user"); }; 

为进一步阅读,贡献者在这里讨论新的行为: https : //github.com/Automattic/mongoose/issues/5399#issuecomment-312523545