我正在尝试将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
抛出链接答案 0 :(得分:4)
由于您的节点和npm的版本而导致的错误, 要消除此错误,您只需通过转到“连接并连接到应用程序”来更改您的连接字符串
答案 1 :(得分:1)
您需要在网址中添加&ssl=true
,完整的网址应如下所示
mongodb+srv://<user>:<password>@********.mongodb.net/<db name>?authSource=admin&compressors=zlib&retryWrites=true&w=majority&ssl=true
答案 2 :(得分:1)
答案 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://.................