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