#azure-cosmosdb #azure-cosmosdb-mongoapi
#azure-cosmosdb #azure-cosmosdb-mongoapi
Вопрос:
Я экспортирую базу данных из mlabs в CosmosDB.
после сбоя с другими методами я, наконец, экспортировал через mongodump и импортировал в CosmosDB. Я могу читать коллекции в studio 3t.
но при подключении в Express / mongoose через ConnectionString все коллекции возвращаются [] .
Я добавил свой IP-адрес в брандмауэр.
Это не код, когда я указываю на базу данных mlab, все извлекается правильно.
чего мне не хватает в CosmosDB?
Ответ №1:
проблема также находится здесь: https://learn.microsoft.com/en-us/answers/questions/153583/cosmosdb-migration-mern-can39t-read-collections.html?childToView=154602#answer-154602
в Azure сгенерированные строки подключения не совсем соответствуют тому, что отправлено упражнением, отправленным Kaylan. и я также не устанавливал некоторые параметры. без параметров я получаю сообщение «Пароль содержит недопустимый неэкранированный символ»
строка первичного подключения и строка вторичного подключения добавляют следующее:
amp;retrywrites=false
amp;maxIdleTimeMS=120000
amp;appName=@<appName>@
как только я удалил это из строки подключения и использовал параметры, все заработало.
мой последний пример подключения:
//pulled from config for clarity
const config = {
'database': process.env.MONGODB_URI || 'mongodb://<user>:<password>@<db>.mongo.cosmos.azure.com:10255/<dbname>?ssl=trueamp;replicaSet=globaldb'
}
mongoose.connect(config.database, //with user and pass inside
{
useNewUrlParser: true,
useUnifiedTopology: true,
retryWrites: false,
useFindAndModify: false,
useCreateIndex: true
})
//.then(() => console.log('Connection to CosmosDB successful'))
.catch((err) => console.error('CosmosDB error:', err))