MongoError:数据库名称必须为字符串

时间:2019-07-08 07:10:15

标签: docker azure-cosmosdb azure-cosmosdb-mongoapi

我的节点后端正在使用Mongo API连接到Cosmos Db。 通过以下步骤通过猫鼬连接会产生错误

  

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

有人想到为什么会这样吗?此服务的测试环境使用一个单独的cosmos db,该数据库在docker内部和外部都可以正常工作。

2 个答案:

答案 0 :(得分:1)

连接字符串格式错误。我缺少数据库名称,是吧...

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

答案 1 :(得分:0)

尝试在docker的.env文件或docker文件中添加COSMOS_DB_CONN_STR变量。然后将设置您的process.env.COSMOS_DB_CONN_STR