Предупреждение при подключении к MongoDB с помощью Node-сервера - программирование
Подтвердить что ты не робот

Предупреждение при подключении к MongoDB с помощью Node-сервера

Соединение с родным драйвером 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}');
  }
);

Когда я пишу в терминал node server.js, я получил следующую ошибку

(узел: 3500) DeprecationWarning: текущий механизм обнаружения и мониторинга сервера устарел и будет удален в следующей версии. Чтобы использовать новый механизм обнаружения и наблюдения за сервером, передайте параметр {useUnifiedTopology: true} в MongoClient.connect. Подключен MongoDB: mongodb://127.0.0.1: 27017 База данных: игра престолов

База данных подключена, но как избавиться от предупреждения

4b9b3361

Ответ 1

Проверьте версию своего монго

 mongo --version

Если вы используете версию> = 3.1.0, измените файл подключения к монго на ->

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

Подробнее о параметре useUnifiedTopology, добавленном в 3.2.1, см. https://github.com/mongodb/node-mongodb-native/releases/tag/v3.2.1

Ответ 2

Небольшое обновление может устранить ошибку при подключении с помощью 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, useUnifiedTopology: true },
  (err, client) => { 
    if (err) return console.log(err);

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

Ответ 3

Мой совет - оставить все как есть (возможно, разместить предупреждение). Опция useUnifiedTopology: true работает неправильно.

Точнее, в случае потери соединения с СУБД, оно никогда не будет восстановлено. Текущая версия 3.3.3 не решает эту проблему.

Проверь это