我正试图连接到我本地的MongoDB数据库,该数据库与nodejs在docker上。我的组件是:
。文件/p> 代码: 控制台输出 误差 我做错了什么?MONGODB_USERNAME = 'accountUser'
MONGODB_PASSWORD = 'password'
MONGODB_HOST = 'mongodb'
MONGODB_DATABASE = 'mydb'
const uri = `mongodb+srv://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@${process.env.MONGODB_HOST}/${process.env.MONGODB_DATABASE}?retryWrites=true&w=majority`;
console.log(uri);
const client = new MongoClient(uri);
mongodb+srv://accountUser:abc123@mongodb/mydb?retryWrites=true&w=majority
MongoParseError: URI does not have hostname, domain name and tld
你试图使用一个SRV URI当你应该使用一个普通的URI
SRV uri对主机名有额外的安全要求(它至少包含3个组件)。
从你的URI中删除+srv
1)。进入数据库,单击编辑密码,生成新密码。
2)。进入数据库,点击编辑密码,只输入字符和数字。
如果用户名或密码包含以下字符:
:
/
?
#
[
]
@
你应该简单地替换那些字符。
如何从一个NestJS应用程序连接到MongoDB Atlas:
- 在
Deployment
下选择Databases
- 点击数据库实例
- 在实例的名称和状态旁边单击
Connect
- 点击
Connect your application
- 在
DRIVER
下选择Node.js
- 在
VERSION
下选择2.2.12 or later
- 复制包含所有单个节点的完整URI,并使用它来连接
正如D. SM
之前所说,您不能使用带有+srv
的URI,并且回滚驱动程序版本是获得没有+srv
生成的连接字符串的唯一方法。