javascript - 无法连接到直接数据库
问题描述
我在 Node 应用程序中通过 Docker 使用 mongo。
如果我使用以下连接字符串,则可以直接连接到 mongo。
mongodb://root:example@localhost:27017
这样做的目的是,如果我要创建一个集合,它最终会出现在一个名为test
的数据库中,而该数据库不是我创建的。从我搜索的内容来看,这个数据库名称测试是默认设置。
连接字符串应包含数据库名称的示例如下:
mongodb://root:example@localhost:27017/my_actual_db
但是尝试以这种方式连接时,它抱怨我的用户名/密码不再正确。
无法看到这是怎么可能的,因为我使用的是 root 密码,而且如果我
没有在连接字符串中提到数据库,它就可以工作。
我可以请你帮忙吗?
1. 我的问题是为什么用户名/密码不再有效。我的 docker-compose 文件有问题吗?
2. 有没有办法通过猫鼬更改数据库名称?
查看文档,我尝试通过以下选项更改它,但它没有产生差异。
数据库仍然称为测试。
我的 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)
})
解决方案
推荐阅读
- java - ProcessBuilder - 无法执行 conda 命令
- javascript - 在 Javascript 应用程序中设置字符集编码
- node.js - 已经在生产中的 nodejs-express 中制作的 Rest API 只接受可选请求
- python - Python 速成班 Eric Mathes
- ios - Swift:多次加载表格时崩溃
- sql - 计算 2 个不同表的输出之间的除法
- php - 为什么在 Magento 1.9 中搜索不返回结果,并且 FastCGI 和 Elastica 的 nginx 日志中出现错误消息?
- python - 设计卡尔曼滤波器
- c++ - 如何在 C++ 项目中包含 ROS 消息过滤器
- objective-c - 从另一个类访问属性,单独的 XIB