MongoDB Docker URI没有主机名、域名和地址



我正试图连接到我本地的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:

  1. Deployment下选择Databases
  2. 点击数据库实例
  3. 在实例的名称和状态旁边单击Connect
  4. 点击Connect your application
  5. DRIVER下选择Node.js
  6. VERSION下选择2.2.12 or later
  7. 复制包含所有单个节点的完整URI,并使用它来连接

正如D. SM之前所说,您不能使用带有+srv的URI,并且回滚驱动程序版本是获得没有+srv生成的连接字符串的唯一方法。

最新更新