Как отмечалось, релиз драйвера 3.1.0-beta4
был "выпущен в дикую природу" немного раньше, судя по всему.Релиз является частью незавершенной работы по поддержке новых функций в предстоящем выпуске MongoDB 4.0 и внесению некоторых других изменений в API.
Одним из таких изменений, вызывающих текущее предупреждение, является параметр useNewUrlParser
из-за некоторых изменений вокругкак передача URI соединения на самом деле работает.Подробнее об этом позже.
Пока все не "успокоится", вероятно, было бы целесообразно "прикрепить" хотя бы к младшей версии для 3.0.x
выпусков:
"dependencies": {
"mongodb": "~3.0.8"
}
Это должно остановить установку ветки 3.1.x
на «свежих» установках для узловых модулей.Если вы уже установили «последний» выпуск, который является «бета-версией», то вам следует очистить свои пакеты (и package-lock.json
) и убедиться, что вы вернулись к выпуску 3.0.x
series.
Что касается фактического использования «новых» параметров URI соединения, основное ограничение заключается в том, чтобы фактически включить port
в строку соединения:
const { MongoClient } = require("mongodb");
const uri = 'mongodb://localhost:27017'; // mongodb://localhost - will fail
(async function() {
try {
const client = await MongoClient.connect(uri,{ useNewUrlParser: true });
// ... anything
client.close();
} catch(e) {
console.error(e)
}
})()
Это более «строгое» правило в новом коде,Суть в том, что текущий код по сути является частью кода репозитория «node-native-driver» (npm mongodb
), а «новый код» фактически импортируется из mongodb-core
библиотека, которая «поддерживает» драйвер «публичного» узла.
Смысл добавляемой «опции» состоит в том, чтобы «облегчить» переход, добавив опцию в новый код, чтобы новый парсер (фактически основанный на url
), используется в коде, добавляющем опцию и очищающем предупреждение об устаревании, и, следовательно, проверяющем, что переданные строки подключения фактически соответствуют тому, что ожидает новый синтаксический анализатор.
В будущих выпусках «устаревший» парсер будет удален, и тогда новый парсер будет просто тем, что используется даже без опции.Но к тому времени ожидается, что весь существующий код будет иметь достаточно возможностей для проверки существующих строк подключения на соответствие ожиданиям нового синтаксического анализатора.
Так что, если вы хотите начать использовать новые функции драйвера по мере их выпуска,затем используйте доступные beta
и последующие выпуски и в идеале убедитесь, что вы предоставляете строку подключения, которая действительна для нового анализатора, включив параметр useNewUrlParser
в MongoClient.connect()
.
Если вы этого не сделаетена самом деле нужен доступ к функциям, связанным с предварительным просмотром выпуска MongoDB 4.0, а затем прикрепите версию к серии 3.0.x
, как отмечалось ранее.Это будет работать так, как задокументировано, и «закрепление» гарантирует, что 3.1.x
выпуски не будут «обновлены» в зависимости от ожидаемой зависимости, пока вы действительно не захотите установить стабильную версию.