Предупреждение при подключении к 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 База данных: игра престолов
База данных подключена, но как избавиться от предупреждения
Ответы
Ответ 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 не решает эту проблему.
Проверь это