猫鼬 4.11.0 承诺超时

Mongoose 4.11.0 Promises timing out

我正在使用猫鼬和蓝鸟。 设置是按规定进行的,并且根据通知的要求使用 useMongoClient 选项。

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

然而 none 我使用的承诺执行。

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

回滚猫鼬版本后问题消失了

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

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

DeprecationWarning: open() is deprecated in mongoose >= 4.11.0, use openUri() instead, or set the useMongoClient option if using connect() or createConnection()

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

希望这对某人有所帮助

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

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.Promise = global.Promise;
mongoose.connect(uri, {
  keepAlive: true,
  reconnectTries: Number.MAX_VALUE,
  useMongoClient: true
});

示例: 常量猫鼬=要求("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");
};