通过节点服务器连接到MongoDB的警告

Mom*_*min 12 database mongoose mongodb node.js

与MongoDB本机驱动程序连接

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

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}`);
  }
);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Biv*_*nod 32

检查您的mongo版本

 mongo --version
Run Code Online (Sandbox Code Playgroud)

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

 MongoClient.connect("mongodb://localhost:27017/YourDB", {
   useNewUrlParser: true,
   useUnifiedTopology: true
 })
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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

更准确地说,如果失去与DBMS的连接,它将永远无法恢复。当前版本3.3.3不能解决此问题。

检查一下

  • 此问题在驱动程序版本 3.3.5 中已修复,因此这应该不再是问题。 (4认同)
  • @davidm_uk 可以确认,答案不再相关。不会投反对票,因为它在发布时既相关又正确。 (2认同)

小智 6

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

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);
    })
})
Run Code Online (Sandbox Code Playgroud)

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