【问题标题】:Pass option { useUnifiedTopology: true } to the MongoClient constructor将选项 { useUnifiedTopology: true } 传递给 MongoClient 构造函数
【发布时间】:2020-07-30 15:47:53
【问题描述】:

有谁知道为什么即使我已经在 MongoClient 构造函数中指定了 useUnifiedTopoology: true,我仍然会收到弃用警告?

提前谢谢你!

const mongodb = require('mongodb')
const MongoClient = mongodb.MongoClient
const connectionURL = 'connectionurl'
const databaseName = 'db'

const client = new MongoClient(connectionURL, { useNewUrlParser: true, useUnifiedTopology: true});

const insertHandler = async(data, collectionName) => {
  await client.connect().then(async() => {
    const collection = client.db(databaseName).collection(collectionName)
    await collection.insertOne(data)
  }).catch(error => {
    console.log("Failed to insert:", error)
  })
}

module.exports = {
  insertHandler: insertHandler
}

我收到以下错误:

DeprecationWarning: current Server Discovery and Monitoring engine
is deprecated, and will be removed in a future version. To use the
new Server Discover and Monitoring engine, pass option { useUnifiedTopology:
true } to the MongoClient constructor.

【问题讨论】:

  • 重启服务器再试一次
  • @kedarsedai 我已经停止 brew 并再次运行 mongoDB,但警告仍然存在。

标签: javascript reactjs database mongodb mongoose


【解决方案1】:

你可以这样做

var mongoDb = require('mongodb');
var mongoClient = mongoDb.MongoClient;
var serverUrl = "mongodb://127.0.0.1:27017/";
var dbName = "sample_db";

mongoClient.connect(serverUrl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, db) {
   // Code goes here...
});

【讨论】:

    【解决方案2】:

    我在 MongoDB 中使用 Mongoose,相同的代码没有错误。 mongoose.connect("mongodb://localhost:27017/YOURDB", { useNewUrlParser: true, useUnifiedTopology: true });

    【讨论】:

      【解决方案3】:
      mongoose.connect('mongodb://localhost/vidly',
      { useNewUrlParser: true , useUnifiedTopology: true })
      .then(()=>{ return console.log("Connected to MongoDB Localhost...");
       })
      .catch(err => console.log("Could not connect",err))
      

      它对我有用!!!

      【讨论】:

      • 欢迎来到 SO。请注意您的下一个答案的几点:(1)正确格式化您的代码。它只是让 OP 和其他用途更容易快速理解解决方案。 (2) 尝试添加有关您的答案的更多详细信息并链接适当的来源(如果有)。
      【解决方案4】:

      这是我使用的,它对我有用:

      const mongoServer = require('mongodb');
      const mongoClient = mongoServer.MongoClient;
      const dbName = 'tconnect';
      const serverUrl = 'mongodb://localhost:27017/';
      
      // Create a database
      const dbUrl =  serverUrl + dbName;
      const client = new mongoClient(dbUrl, { useUnifiedTopology: true });
      
      client.connect( (err, db) => {
          if (err) {
              console.log(err);
              return;
          }
          else {
              console.log('Database successfully created!');
              db.close();
          }
      });
      

      【讨论】:

      • 与问题中的方法相比,为什么您认为您的方法有效?您能否扩展一下您的答案的解释?
      【解决方案5】:

      我试过了,这是有效的解决方案:

      mongoose.connect("mongodb://localhost:27017/fruitsDB", { useNewUrlParser: true,  useUnifiedTopology: true });
      

      亲切的问候,

      【讨论】:

        【解决方案6】:

        我用这种方式,我再也看不到那个警告了。

        const run = async () => {
        await mongoose.connect(keys.mongoURI, {
          useNewUrlParser: true,
          useUnifiedTopology: true
        });
        };
        run().catch(error => console.error(error);
        

        【讨论】:

          【解决方案7】:

          https://github.com/Automattic/mongoose/issues/8169

          这是解决这个问题的参考

          const assert = require('assert');
          const mongoose = require('mongoose');
          mongoose.set('debug', true);
          
          const GITHUB_ISSUE = `gh8169`;
          const connectionString = `mongodb://localhost:27017/${ GITHUB_ISSUE }`;
          const { Schema } = mongoose;
          
          run().then(() => console.log('done')).catch(error => console.error(error.stack));
          
          async function run() {
            console.log('Mongoose version:', mongoose.version);
            mongoose.set('useUnifiedTopology', true);
            mongoose.set('useNewUrlParser', true);
            mongoose.connect(connectionString, { useFindAndModify: false });
            const db = mongoose.connection;
            
            db.once('open', () => console.log('connected'));
          } 
          
          

          【讨论】:

            【解决方案8】:

            如下写:

            mongoose.connect('mongodb://localhost:27017/contactlist', { useNewUrlParser: true, useUnifiedTopology: true });

            【讨论】:

              猜你喜欢
              • 2021-04-04
              • 2021-05-05
              • 2020-07-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-07
              • 2011-09-24
              • 2012-01-15
              相关资源
              最近更新 更多