У меня есть класс-оболочка базы данных, который устанавливает соединение с некоторым экземпляром MongoDB:
async connect(connectionString: string): Promise<void> {
this.client = await MongoClient.connect(connectionString)
this.db = this.client.db()
}
Это дало мне предупреждение:
(узел: 4833) DeprecationWarning: текущий анализатор строки URL устарел и будет удален в следующей версии. Чтобы использовать новый анализатор, передайте параметр {useNewUrlParser: true} в MongoClient.connect.
connect()
Метод принимает MongoClientOptions
экземпляр в качестве второго аргумента. Но это не называется свойство useNewUrlParser
. Я также попытался установить это свойство в строке подключения следующим образом: mongodb://127.0.0.1/my-db?useNewUrlParser=true
но оно не влияет на эти предупреждения.
Итак, как я могу установить, useNewUrlParser
чтобы удалить эти предупреждения? Это важно для меня, так как скрипт должен запускаться как cron, и эти предупреждения приводят к спаму в почтовой корзине.
Я использую mongodb
драйвер в версии 3.1.0-beta4
с соответствующим @types/mongodb
пакетом в 3.0.18
. Оба они являются последним доступным использованием npm install
.
Временное решение
Использование более старой версии драйвера mongodb:
"mongodb": "~3.0.8",
"@types/mongodb": "~3.0.18"
beta
версии, которая как-то вышла на npm в выходные. Не беспокойтесь об этом, пока API фактически не будет завершен. Вы правильно сделали, установив стабильную версию.Ответы:
Проверьте свою
mongo
версию:Если вы используете версию> = 3.1.0, измените файл
mongo
подключения на ->или ваш файл подключения mongoose к ->
В идеале это функция версии 4, но v3.1.0 и выше также поддерживают ее. Проверьте MongoDB GitHub для деталей.
источник
Как отмечалось,
3.1.0-beta4
релиз водителя «вышел в дикую природу» немного раньше, судя по всему. Релиз является частью незавершенной работы по поддержке новых функций в предстоящем выпуске MongoDB 4.0 и внесению некоторых других изменений в API.Одним из таких изменений, вызывающих текущее предупреждение, является
useNewUrlParser
опция, связанная с некоторыми изменениями того, как на самом деле работает передача URI соединения. Подробнее об этом позже.Пока все не «успокоится», вероятно, было бы целесообразно «приколоть» хотя бы к младшей версии для
3.0.x
выпусков:Это должно остановить установку
3.1.x
ветки на «свежих» установках для узловых модулей. Если вы уже установили «последний» выпуск, который является «бета-версией», то вы должны очистить свои пакеты (иpackage-lock.json
) и убедиться, что вы снизили их до3.0.x
серийному выпуску.Что касается фактического использования «новых» параметров URI соединения, основное ограничение заключается в том, чтобы фактически включить
port
в строку соединения:Это более «строгое» правило в новом коде. Суть в том, что текущий код по сути является частью
mongodb
кода репозитория «node-native-driver» (npm ), а «новый код» фактически импортирует изmongodb-core
библиотеки, которая «поддерживает» «публичный» драйвер узла.Смысл добавления «опции» состоит в том, чтобы «облегчить» переход, добавив эту опцию в новый код, чтобы новый парсер (фактически основанный на
url
) использовался в коде, добавляя эту опцию и сбрасывая предупреждение об устаревании, и, следовательно, проверяя, что переданные вами строки подключения фактически соответствуют ожиданиям нового синтаксического анализатора.В будущих выпусках парсер 'legacy' будет удален, и тогда новый парсер будет просто тем, что используется даже без опции. Но к тому времени ожидается, что весь существующий код будет иметь достаточно возможностей для проверки существующих строк подключения на соответствие ожиданиям нового синтаксического анализатора.
Поэтому, если вы хотите начать использовать новые функции драйвера по мере их выпуска, используйте доступные
beta
и последующие версии и в идеале убедитесь, что вы предоставляете строку подключения, которая действительна для нового анализатора, включивuseNewUrlParser
параметр вMongoClient.connect()
.Если вам на самом деле не нужен доступ к функциям, связанным с предварительным просмотром выпуска MongoDB 4.0, то прикрепите версию к
3.0.x
серии, как отмечалось ранее. Это будет работать так, как задокументировано, и «закрепление» гарантирует, что3.1.x
выпуски не будут «обновлены» в зависимости от ожидаемой зависимости, пока вы действительно не захотите установить стабильную версию.источник
npm install mongodb
результате чего была установлена «бета» (четко обозначенная в строке версии, показанной в вопросе), поскольку она была помечена какstable
в репозитории npm, когда она не должно было быть. В то время это действительно было ошибкой, и ее всегда следует учитывать, если какой-либо выпуск кода, показывающийalpha
илиbeta
находящийся в строке версии, аналогичным образом помечается как стабильный. Естественно, прошло время, и сейчас это функция стабильных выпусков, пока (как уже отмечалось) она в конечном итоге не исчезнет.Приведенный ниже код для подключения к mongoose устраняет предупреждение для драйвера mongoose:
источник
Здесь нечего менять. Пройдите только в функции подключения
{useNewUrlParser: true }
.Это будет работать:
источник
Вам необходимо добавить
{ useNewUrlParser: true }
метод mongoose.connect ().источник
Формат строки подключения должен быть mongodb: // пользователь: пароль @ хост: порт / дБ
Например:
источник
MongoClient.connect('mongodb://127.0.0.1:27017/yourDB', { useNewUrlParser: true } )
тоже работает.Вам просто нужно установить следующие вещи перед подключением к базе данных, как показано ниже:
Также,
источник
correct
будто это сработало для вас. Это сработало и для меня!Следующее работает для меня
mongoose
Версия5.8.10
.источник
body-parser": "^1.19.0", "express": "^4.17.1", "mongoose": "^5.9.14"
Я не думаю, что вам нужно добавлять
{ useNewUrlParser: true }
.Вам решать, хотите ли вы уже использовать новый анализатор URL. В конце концов, предупреждение исчезнет, когда MongoDB переключится на свой новый анализатор URL.
Как указано в формате URI строки подключения , вам не нужно устанавливать номер порта.
Достаточно просто добавить
{ useNewUrlParser: true }
.источник
useNewUrlParser: true
предупреждение исчезнет. Но это немного глупо, так как этот дополнительный параметр устареет, когда mongo переключится на свой новый парсер URL.Обновлено для ECMAScript 8 / ожидание
Неправильный демонстрационный код ECMAScript 8, предоставляемый MongoDB inc также создает это предупреждение.
MongoDB дает следующий совет, который является неправильным
Это приведет к следующей ошибке:
Вместо этого должна быть предоставлена опция
new MongoClient
:Смотрите код ниже:
источник
Проблема может быть решена путем указания номера порта и использования этого парсера:
{useNewUrlParser: true}
Решение может быть:
Это решает мою проблему.
источник
useNewUrlParser property
вconnect
, но ваше решение помогло. так что проголосовал!Полный пример для Express.js, случая вызова API и отправки контента JSON:
источник
Вот как у меня это есть. Подсказка не отображалась на моей консоли, пока я не обновил npm пару дней назад.
.connect имеет три параметра: URI, параметры и ошибки.
источник
Мы использовали:
→ Это приводит к ошибке парсера URL
Правильный синтаксис:
источник
Вам просто нужно добавить
внутри метода mongoose.connect.
источник
Следующая работа у меня для версии 5.9.16
источник
Эти строки сделали свое дело для всех других предупреждений об устаревании:
источник
Я использовал mlab.com в качестве базы данных MongoDB. Я разделил строку подключения к другой папке с именем
config
и внутри файла keys.js Я сохранил строку подключения, которая была:И код сервера был
Вам нужно написать {useNewUrlParser: true} после строки подключения, как я делал выше.
Проще говоря, вам нужно сделать:
источник
Я использую версию 5x для своего проекта. После запроса пакета мангусты, установите значение глобально, как показано ниже.
источник
Если
username
илиpassword
имеет@
символ, то используйте его так:источник