【问题标题】:MongoDB (Mongoose) with Node.js connection errors - Looking for insight带有 Node.js 连接错误的 MongoDB (Mongoose) - 寻找洞察力
【发布时间】: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} 但仍然出现相同的错误

标签: javascript node.js database mongodb mongoose


【解决方案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 向我们展示了代码,因为我看不到问题
猜你喜欢
  • 2018-05-12
  • 2019-03-06
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 2013-03-10
  • 1970-01-01
  • 2017-06-29
相关资源
最近更新 更多