Arv*_*mar 18 mongoose node.js mongodb-atlas
我正在尝试创建一个完整的应用程序,阅读以下教程:
我遵循了所有步骤,然后尝试运行:
node server.js
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
MongoDB 连接错误:MongoTimeoutError:服务器选择在 Timeout._onTimeout (C:\RND\fullstack_app\backend\node_modules\mongodb\lib\core\sdam\server_selection.js:308:9) 在 30000 毫秒后超时(内部/ timers.js:531:17) at processTimers (internal/timers.js:475:7) { name: 'MongoTimeoutError', reason: Error: connect ETIMEDOUT 99.80.11.208:27017 at TCPConnectWrap.afterConnect [as oncomplete] (net. js:1128:14) { name: 'MongoNetworkError', [Symbol(mongoErrorContextSymbol)]: {} }, [Symbol(mongoErrorContextSymbol)]: {} } (node:42892) UnhandledPromiseRejectionWarning: MongoTimeoutError: 服务器选择在 30000 毫秒后超时在 Timeout._onTimeout (C:\RND\fullstack_app\backend\node_modules\mongodb\lib\core\sdam\server_selection.js:308:9) 在 listOnTimeout (internal/timers.js:531:17) 在 processTimers (internal/timers.js:475:7)
我在 server.js 上的代码如下:
const mongoose = require('mongoose');
const router = express.Router();
// this is our MongoDB database
const dbRoute =
'mongodb+srv://user:<password>@cluster0-3zrv8.mongodb.net/test?retryWrites=true&w=majority';
mongoose.Promise = global.Promise;
// connects our back end code with the database
mongoose.connect(dbRoute,
{ useNewUrlParser: true,
useUnifiedTopology: true
});
let db = mongoose.connection;
db.once('open', () => console.log('connected to the database'));
Run Code Online (Sandbox Code Playgroud)
有什么建议?
jav*_*301 56
我在这上面浪费了一整天,因为白名单建议不是我的问题(我在 docker compose 中运行,选项设置正确,每次我的客户端尝试连接时,--bind_ip
我都可以在 mongo 日志中看到)。Connection accepted
事实证明,我只需要将其添加到代码中连接字符串的末尾:
?directConnection=true
Run Code Online (Sandbox Code Playgroud)
连接字符串:
mongodb://myUserId:myPassword@mongodb/myDatabase?directConnection=true
Run Code Online (Sandbox Code Playgroud)
我希望 mongodb 更好地记录这一点,因为我只是在使用该客户端连接时查看 mongosh 日志时偶然发现的。
Kun*_*kar 30
只需转到 mongodb atlas 管理面板。进入安全选项卡>网络访问>然后通过添加将您的 IP 列入白名单
注意:在谷歌上检查你的IP然后添加它
Shr*_*nan 17
就我而言,这个问题是在 NodeJS 版本从 Node 14 升级到 Node 17 之后发生的,并且 mongoose 未在本地连接到 MongoDB。
解决方案 - 在连接字符串中,更改localhost
为127.0.0.1
.
参考 - https://github.com/Automattic/mongoose/issues/10917#issuecomment-957671662
小智 8
有时当你的 MongoDB 服务关闭时也会发生这种情况。
以下是打开 MongoDB 服务的步骤:
key + R
打开运行窗口。services.msc
以打开服务窗口。start
.我得到了同样的错误。这些是我为解决它而遵循的步骤
在这些步骤之后,它照常工作。希望这会帮助你们。
有时会发生此错误是由于 IP 地址允许访问我们的数据库。
请注意,您的应用程序可以正常运行,然后出现此类错误。每当发生这种情况时,大多数情况下您的 IP 地址已更改,这不在允许的地址白名单中。
您所要做的就是使用您当前的 IP 地址更新白名单
您是否在使用任何防病毒软件、防火墙、VPN 或受限网络(例如工作/商业 Wi-Fi/LAN 连接)?然后尝试将其关闭/重新连接到不同的网络。某些 IP/连接可能会被您正在使用的网络管理员阻止,或者只是防病毒软件可能有防火墙策略。即使您有0.0.0.0
MongoDB IP Address
Atlas。
归档时间: |
|
查看次数: |
67052 次 |
最近记录: |