Как отмечалось, 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
серийному выпуску.
Что касается фактического использования «новых» параметров 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)
}
})()
Это более «строгое» правило в новом коде. Суть в том, что текущий код по сути является частью mongodb
кода репозитория «node-native-driver» (npm ), а «новый код» фактически импортирует из mongodb-core
библиотеки, которая «поддерживает» «публичный» драйвер узла.
Смысл добавления «опции» состоит в том, чтобы «облегчить» переход, добавив эту опцию в новый код, чтобы новый парсер (фактически основанный на url
) использовался в коде, добавляя эту опцию и сбрасывая предупреждение об устаревании, и, следовательно, проверяя, что переданные вами строки подключения фактически соответствуют ожиданиям нового синтаксического анализатора.
В будущих выпусках парсер 'legacy' будет удален, и тогда новый парсер будет просто тем, что используется даже без опции. Но к тому времени ожидается, что весь существующий код будет иметь достаточно возможностей для проверки существующих строк подключения на соответствие ожиданиям нового синтаксического анализатора.
Поэтому, если вы хотите начать использовать новые функции драйвера по мере их выпуска, используйте доступные beta
и последующие версии и в идеале убедитесь, что вы предоставляете строку подключения, которая действительна для нового анализатора, включив useNewUrlParser
параметр в MongoClient.connect()
.
Если вам на самом деле не нужен доступ к функциям, связанным с предварительным просмотром выпуска MongoDB 4.0, то прикрепите версию к 3.0.x
серии, как отмечалось ранее. Это будет работать так, как задокументировано, и «закрепление» гарантирует, что 3.1.x
выпуски не будут «обновлены» в зависимости от ожидаемой зависимости, пока вы действительно не захотите установить стабильную версию.
beta
версии, которая как-то вышла на npm в выходные. Не беспокойтесь об этом, пока API фактически не будет завершен. Вы правильно сделали, установив стабильную версию.