【问题标题】:Warning on Connecting to MongoDB with a Node server使用节点服务器连接到 MongoDB 的警告
【发布时间】:2019-12-24 01:50:46
【问题描述】:

连接 MongoDB 原生驱动

我编写了以下代码通过已使用npm install mongodb --save 安装的本机驱动程序连接 mongodb

const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017";

const dbName = "game-of-thrones";
let db;

MongoClient.connect(
url,
 { useNewUrlParser: true },
  (err, client) => {
    if (err) return console.log(err);

  db = client.db(dbName);
   console.log(`Connected MongoDB: ${url}`);
   console.log(`Database: ${dbName}`);
  }
);

当我在终端node server.js 上写字时,出现以下错误

(node:3500) DeprecationWarning:当前的服务器发现和监控引擎已被弃用,并将在未来的版本中删除。要使用新的服务器发现和监控引擎,请将选项 { useUnifiedTopology: true } 传递给 MongoClient.connect。 连接的MongoDB:mongodb://127.0.0.1:27017 数据库:权力的游戏

数据库已连接,但如何摆脱警告

【问题讨论】:

    标签: node.js database mongodb mongoose


    【解决方案1】:

    检查你的 mongo 版本

     mongo --version
    

    如果您使用的是 >= 3.1.0 版本,请将您的 mongo 连接文件更改为 ->

     MongoClient.connect("mongodb://localhost:27017/YourDB", {
       useNewUrlParser: true,
       useUnifiedTopology: true
     })
    

    关于 3.2.1 中添加的useUnifiedTopology 选项的详细信息,请参阅https://github.com/mongodb/node-mongodb-native/releases/tag/v3.2.1

    【讨论】:

      【解决方案2】:

      我的建议是保持原样(也许会发出警告)。 useUnifiedTopology: true 选项无法正常工作。

      更准确地说,如果与 DBMS 的连接断开,它将永远无法恢复。当前版本 3.3.3 没有解决这个问题。

      Check this

      【讨论】:

      • 此问题在驱动程序版本 3.3.5 中显示为已修复,因此这应该不再是问题。
      • @davidm_uk 可以确认,答案不再相关。不会投反对票,因为它在发布时既相关又正确。
      【解决方案3】:

      我遇到了同样的错误并使用下面的模板解决了。

      var MongoClient = require('mongodb').MongoClient
      
      const client = new MongoClient(uri, {useUnifiedTopology: true});
      
      client.connect().then((client)=>{
          var db = client.db('db_name')
          db.collection('collection_name').find().toArray(function (err, result) {
              if (err) throw err
              console.log(result);
          })
      })
      

      这对我有用。现在它没有显示任何 DepricationWarning。

      【讨论】:

        【解决方案4】:

        yourdbname 替换为您的变量或只是您的mongodb 的链接..

         mongoose.connect(yourdbname, {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true })
          .then(console.log("mongodb connected successfully...."))
          .catch(err =>console.log(err));
        

        【讨论】:

        • 用户想了解 Native Mongo 客户端
        【解决方案5】:

        我想在此线程中添加它可能还与其他依赖项有关。

        例如,我为 NodeJS、MongoDB 或 Mongoose 更新或设置的任何内容都不是问题 - 但是 - connect-mongodb-session 已更新并开始出现相同的错误。在这种情况下,解决方案是简单地将connect-mongodb-session 的版本从版本2.3.0 回滚到2.2.0

        更新:该问题现已在 connect-mongodb-session@2.3.1 中得到修复。

        【讨论】:

        • 这在 2.3.1 版本中已修复耶!
        • 伟大的召唤。有些人可能不会考虑检查他们的依赖关系
        【解决方案6】:

        这就是它对我有用的原因。

        MongoClient.connect('mongodb://localhost:27017/blogdb', {useUnifiedTopology: true} , (err, client) =>
        {
          if (err) throw err;
          const db = client.db('blogdb');
          const collection = db.collection('posts');
          const users = db.collection('users');
          app.locals.collection = collection;
          app.locals.users = users;
        
        });
        

        这与我之前收到相同弃用消息的代码完全相同。唯一的区别是我没有添加 'useUnifiedTopology: true' 行。

        MongoClient.connect('mongodb://localhost:27017/blogdb', (err, client) =>
        {
          if (err) throw err;
          const db = client.db('blogdb');
          const collection = db.collection('posts');
          const users = db.collection('users');
          app.locals.collection = collection;
          app.locals.users = users;
        
        });
        

        【讨论】:

          【解决方案7】:

          是的,我遇到了同样的问题,数据库已成功连接,但我曾经遇到过弃用警告的警告消息。以下是我用来处理它的一些简短提示,希望对您有所帮助

          mongoose.connect(
            database,
            {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true })
          

          【讨论】:

          • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
          猜你喜欢
          • 2021-04-14
          • 2021-01-28
          • 2022-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-24
          • 2010-11-03
          相关资源
          最近更新 更多