MongoError: имя базы данных должно быть строкой - PullRequest
0 голосов
/ 08 июля 2019

Бэкэнд моего узла подключается к Cosmos Db с помощью Mongo API.Подключение через mongoose с помощью следующих шагов приводит к ошибке

MongoError: имя базы данных должно быть строкой

при работе в Docker.Он отлично работает при использовании nodemon, то есть вне контейнера Docker.

( < any > Mongoose).Promise = global.Promise;
const options: ConnectionOptions = {useNewUrlParser: true, useFindAndModify: false};
const mongoURI: string = process.env.COSMOS_DB_CONN_STR;
connect(mongoURI, options)
.then(() => console.log(`Mongo DB: connected`))
.catch(err => console.log(`Could not connect. Error: ${err}`));

process.env.COSMOS_DB_CONN_STR имеет формат

mongodb://<USER_NAME>:<KEY>@<DB_INSTANCE_NAME>.documents.azure.com:<PORT>/?ssl=true&replicaSet=globaldb

Есть мысли, почему это происходит?Среда тестирования этого сервиса использует отдельную базу данных космоса, которая прекрасно работает внутри и снаружи докера.

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Строка подключения была повреждена. Я скучал по имени БД, дух ...

mongodb://<USER_NAME>:<KEY>@<INSTANCE_NAME>.documents.azure.com:<PORT>/<DBNAME_WAS_MISSING_HERE>?ssl=true&replicaSet=globaldb
0 голосов
/ 08 июля 2019

Попробуйте добавить переменную COSMOS_DB_CONN_STR в файл .env в Docker или в файл Docker. Тогда ваш process.env.COSMOS_DB_CONN_STR будет установлен.

...