我的节点后端正在使用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内部和外部都可以正常工作。
答案 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
。