如何修复 MongoDB 连接上的“MongoParseError: Multiple text records not allowed at ...”

And*_*uso 5 javascript mongoose mongodb node.js

这是我第一次在这里写作,我的英语说得不好,所以如果我错了,请批评者以一种好的方式。

所以,问题是当我在启动node.js 后重新启动它时,我收到此错误,我必须等待 10/20 秒才能重新启动并获取数据库连接。

错误:

[nodemon] starting `node server.js`
Not Connected:  { MongoParseError: Multiple text records not allowed
    at QueryReqWrap.dns.resolveTxt [as callback] (/Users/guy/Desktop/Progetto PWM/progetto/node_modules/mongodb-core/lib/uri_parser.js:93:27)
    at QueryReqWrap.onresolve [as oncomplete] (dns.js:198:10)
  name: 'MongoParseError',
  [Symbol(mongoErrorContextSymbol)]: {} }
Run Code Online (Sandbox Code Playgroud)

我正在关注一个视频教程,该教程解释了Nodejs与 MongoDB 连接的基础知识,这些是我的依赖项:

"body-parser": "^1.19.0",
"dotenv": "^8.0.0",
"express": "^4.17.1",
"mongoose": "^5.6.7",
"morgan": "^1.9.1"
Run Code Online (Sandbox Code Playgroud)

我的.env文件包含:

MONGO_URI= mongodb+srv://<name>:<password>@myproject-0aqq2.mongodb.net/test?retryWrites=true&w=majority
Run Code Online (Sandbox Code Playgroud)

括号内是我的数据。

编辑

这是我用来连接的代码

mongoose.connect(process.env.MONGO_URI, {useNewUrlParser: true})
.then(() => console.log("Connected"))
.catch(err => {
  console.log("Not Connected: ", err);
});
Run Code Online (Sandbox Code Playgroud)

小智 3

此问题的解决方案是使用 文档中指定的分片集群的标准连接字符串格式:

mongodb://<user>:<password>@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/admin
Run Code Online (Sandbox Code Playgroud)

@mongos0.example.com:27017将替换为主要主机名,后面是 2 个辅助主机。您可以在 Altas Web 界面的集群概览中获取 3 台主机的地址和端口。请务必将 /admin 替换为您要连接的数据库的名称。

这是推荐与 mongoose 一起使用的字符串连接格式 (3.4) - 我与 mongo 支持人员检查了这一点,他们非常有帮助!