错误:使用猫鼬连接到MongoDb Atlas时出现queryTxt ETIMEOUT

时间:2020-05-14 14:35:31

标签: mongodb mongoose mongodb-query

我正在尝试将Mongoose与我的MongoDB Atlas集群连接。它目前没有数据库或任何东西,但是只要我尝试:

mongoose.connect( uri || 'mongodb://localhost/test',options)
.then(()=>{
    console.log("Connected to the Database. Yayzow!");
})
.catch(err => {
    console.log(err);
});

我收到此消息:

Error: queryTxt ETIMEOUT cluster0-ghis2.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (dns.js:202:19) {
errno: 'ETIMEOUT',
  code: 'ETIMEOUT',
  syscall: 'queryTxt',
  hostname: 'cluster0-ghis2.mongodb.net'
}

我的依赖项:

  "dependencies": {
    "express": "^4.17.1",
    "mongodb": "^3.5.7",
    "mongoose": "^5.9.14"
  }

我已将所有IP列入白名单(0.0.0.0/0)。另外,我还确保防火墙和杀毒软件都已断开连接。我也让我的朋友检查了一下,它确实对他有用,但对我没有帮助

感谢您的帮助!

编辑

通过将我的DNS更改为Google的公共DNS解决了该错误! 如果有人遇到此错误,请确保更改您的DNS。 为相同的here

抛出链接

8 个答案:

答案 0 :(得分:4)

由于您的节点和npm的版本而导致的错误, 要消除此错误,您只需通过转到“连接并连接到应用程序”来更改您的连接字符串

  1. 将版本更改为 2.2.122或更高版本
  2. 复制字符串并粘贴,然后尝试再次连接。 如图所示 enter image description here

答案 1 :(得分:1)

您需要在网址中添加&ssl=true,完整的网址应如下所示

mongodb+srv://<user>:<password>@********.mongodb.net/<db name>?authSource=admin&compressors=zlib&retryWrites=true&w=majority&ssl=true

答案 2 :(得分:1)

要解决此问题,请确保选择较旧版本的节点(2.2.12)或更高版本

enter image description here

,然后确保将您的IP地址添加到白名单中

enter image description here

答案 3 :(得分:1)

我怀疑其中几个答案确实归结为同一件事 - 网络需要重置。我只是有一个奇怪的经历 - 我不得不在不同的端口上运行不同的应用程序,但都访问同一个 mongo 实例。一个有连接错误,另一个没有。我重新启动,两者都很好。

导致这种情况的另一个情况是我在 mongoose 调用周围没有 async / await 的实例。

答案 4 :(得分:1)

将 DNS 更改为 8.8.8.8 对我有用。

在更改我的 DNS 之前,我尝试重新安装 mongoose,检查我的连接,并关闭我的 vpn。他们都没有工作。

答案 5 :(得分:0)

请检查您的连接字符串。密码必须是经过编码的密码,而不是纯文本。

答案 6 :(得分:0)

就我而言,问题出在数据库网络访问中。我应该选择我当前的 IP 地址而不是 ALLOW ACCESS FROM ANYWHERE

答案 7 :(得分:-1)

确保您的连接 URL 正常。在 .env 文件(一个用于环境变量)中,删除连接字符串周围的双引号。 收下: URL = mongodb+srv://.................