【问题标题】:Deprecation warning when connecting to mongoose连接到猫鼬时的弃用警告
【发布时间】:2021-03-05 17:07:09
【问题描述】:

我正在连接 mongoose 数据库,每次尝试连接时都会收到弃用警告。

(node:14933) DeprecationWarning: 当前服务器发现和 监控引擎已弃用,未来将被移除 版本。要使用新的服务器发现和监控引擎,请通过 选项 { useUnifiedTopology: true } 到 MongoClient 构造函数。

我将 useUnifiedTopology 设置为 true,但我仍然收到错误消息。我做错了什么,我该如何解决?

const mongooseOptions = {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,
    useUnifiedTopology: true,
};

const dbUrl = config.get('dbUrl');

await mongoose.connect(dbUrl, mongooseOptions);

【问题讨论】:

  • 对我来说看起来是正确的。 mongo URL 是否包含任何 *reconnect* 选项?是否可以从其他任何地方建立连接?
  • @Matt 你的权利!我正在使用议程:const agenda = new Agenda({ db: { address: dbUrl }, processEvery: '1 seconds', }); 我使用相同的连接?
  • 是的,或者至少是adding the same options

标签: node.js express mongoose


【解决方案1】:

useUnifiedTopologyDeprecationWarning 来自底层mongodb driver。任何连接都需要此设置才能使用新的连接管理。

在议程中,传入options

const agenda = new Agenda({
  db: {
    address: 'mongodb://localhost:27017/agenda',
    options: {
      useUnifiedTopology: true,
      useNewUrlParser: true,
    }
  }
})

看起来议程还可以通过传入底层mongodb db 来重用现有的猫鼬连接,例如:

const agenda = new Agenda({
  mongo: mongoose.connection.db('agenda-test')
})

【讨论】:

  • 谢谢!推荐哪个,添加现有连接或创建新连接?
  • 现有的连接应该没问题,直到它不是 :) 抱歉很难说,因为它非常具体到议程或您的应用程序对数据库和托管环境的影响程度。
猜你喜欢
  • 2017-11-09
  • 2016-11-03
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多