хорошо, так как из-за пароля @
он не может понять, какую часть он должен рассматривать как пароль или хост,
если вы видите строковый формат Монго:
mongodb://<user>:<pass>@<host>:<port>/<db_name>
здесь Пароль и Хост отделен от @
и, если есть еще один @
, скажем, в вашем случае его внутренний пароль,
Mongo String будет выглядеть так:
mongodb://<user>:<pass_1st_part>@<pass_2nd_part>@<host>:<port>/<db_name>
что не приемлемо,
для этого вы можете сделать что-то вроде этого:
Вариант 1 :
mongoose.connect(`mongodb://<USER_NAME>:${encodeURIComponent('<P@SS>')}@<HOST>:<PORT>/<DB_NAME>`)
Здесь мы кодируем пароль с помощью encodeURIComponent()
, поэтому p@ss
станет p%40ss
.
Примечание:
иногда вам может понадобиться добавить { uri_decode_auth: true }
в option .
если вы используете драйвер mongo netive.
Вариант 2 :
mongoose.connect('mongodb://<HOST>:<PORT>/<DB_NAME>',
{user: '<USER_NAME>', pass: '<P@SS>'});