带有 Node.js 连接错误的 MongoDB (Mongoose) - 寻找洞察力
Posted
技术标签:
【中文标题】带有 Node.js 连接错误的 MongoDB (Mongoose) - 寻找洞察力【英文标题】:MongoDB (Mongoose) with Node.js connection errors - Looking for insight 【发布时间】:2020-09-26 11:30:14 【问题描述】:我是 node.js 和 mongoDB Atlas 的新手。我在使用 Node.js 3.0 版或更高版本的连接字符串连接到 Mongo Atlas 时遇到问题。
const MongoDB = 'mongodb+srv://<user>:<password>@cluster0-nnezr.mongodb.net/<dbname>?retryWrites=true&w=majority'
当我使用此连接字符串时,我收到以下错误 -
MongoDB 连接错误:错误:querySrv ETIMEOUT _mongodb._tcp.cluster0-nnezr.mongodb.net
在 QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19)
错误号:未定义,
代码:'ETIMEOUT',
系统调用:'querySrv',
主机名:'_mongodb._tcp.cluster0-nnezr.mongodb.net'
(节点:38809)UnhandledPromiseRejectionWarning:错误:querySrv ETIMEOUT _mongodb._tcp.cluster0-nnezr.mongodb.net
在 QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19)
(使用node --trace-warnings ...
显示警告的创建位置)
(节点:38809)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict
(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:1)
(节点:38809)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
我找到了使用 node.js 版本 2.2.12 的先前连接字符串的解决方法 -
mongodb://<user>:<password>@cluster0-shard-00-00-nnezr.mongodb.net:27017,cluster0-shard-00-01-nnezr.mongodb.net:27017,cluster0-shard-00-02-nnezr.mongodb.net:27017/<dbname>?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&w=majority
连接时我必须添加 useUnifiedTopology: true
mongoose.connect(mongoDB, useNewUrlParser: true, useUnifiedTopology: true );
谁能告诉我我对新连接字符串做错了什么?
谢谢!
【问题讨论】:
您使用的是 .env 文件吗?尝试编写 useNewUrlParser: true, useFindAndModify: false, useUnifiedTopology: true 不使用 .env 文件。尝试添加 useFindAndModify: false 但仍然出现相同的错误 【参考方案1】:有写用户,密码,也许还有数据库,
const MongoDB = 'mongodb+srv://<user>:<password>@cluster0-nnezr.mongodb.net/<dbname>?retryWrites=true&w=majority'
user = 你的 mongodb 用户名
password = 你的 mongodb 密码
dbname = 数据库名称
别忘了在 MongoDB atlas 中创建一个新用户。
【讨论】:
这不用说你做对了吗? XD 以为他错过了那些领域。 是的,这不是问题=D 我没有故意在问题中包含我的用户名和密码或数据库名称。 是的,但是 XD 向我们展示了代码,因为我看不到问题以上是关于带有 Node.js 连接错误的 MongoDB (Mongoose) - 寻找洞察力的主要内容,如果未能解决你的问题,请参考以下文章
如何在 node.js 和 mongoDB 本机驱动程序上启用调试?