我在 Node 应用程序中通过 Docker 使用 mongo。
如果我使用以下连接字符串,可以直接连接到mongo。
mongodb://root:example@localhost:27017
如果我要创建一个集合,它的作用是在一个名为 test 的数据库中结束
不是我创建的。根据我的搜索,这个数据库名称 test 是默认的。
已看到连接字符串应包含数据库名称的示例,如下所示:
mongodb://root:example@localhost:27017/my_actual_db
但是尝试以这种方式连接时,它抱怨我的用户名/密码不再正确。
无法看到这是怎么可能的,因为我使用的是 root 密码,而且如果我
不要在连接字符串中提及数据库。
我能帮我解决这个问题吗?
1.我的问题是为什么用户名/密码不再有效。我的 docker-compose 文件有问题吗?
2.否则有没有办法通过猫鼬更改数据库名称?
查看文档,我尝试通过以下选项对其进行更改,但没有区别。
db 仍称为 test。
我的 docker-compose.yml 文件
version: "3.1"
services:
mongo:
image: mongo
container_name: mongo-instance-1
restart: always
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
volumes:
- ./data:/data/db
mongo-express:
image: mongo-express
container_name: mongo-express-instance-1
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
通过节点应用程序中的猫鼬连接。
// process.env.DB_CONNECTION is the connection Strings above
mongoose.connect(process.env.DB_CONNECTION,
{
useNewUrlParser: true,
name: 'my_actual_db', // doesn't make a diff, db name remains as test
})
.then(value => {
console.log(value)
})
.catch(err => {
console.log(err)
})