连接到猫鼬时的弃用警告

Posted

技术标签:

【中文标题】连接到猫鼬时的弃用警告【英文标题】: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。 【参考方案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')
)

【讨论】:

谢谢!推荐哪个,添加现有连接或创建新连接? 现有的连接应该没问题,直到它不是 :) 抱歉很难说,因为它非常具体到议程或您的应用程序对数据库和托管环境的影响程度。

以上是关于连接到猫鼬时的弃用警告的主要内容,如果未能解决你的问题,请参考以下文章

sklearn 的弃用警告

AppAuth 的弃用警告

Bootstrap SCSS 中的弃用警告

sklearn MiniBatchKMeans 中的弃用警告

我可以防止嵌套的弃用方法调用引发警告吗?

Squeel load_core_extensions 的弃用警告