【发布时间】:2021-08-26 00:13:53
【问题描述】:
错误:UnhandledPromiseRejectionWarning:MongooseServerSelectionError:无法连接到 MongoDB Atlas 集群中的任何服务器。一个常见原因是您尝试从未列入白名单的 IP 访问数据库。确保您当前的 IP 地址在 Atlas 集群的 IP 白名单中:https://docs.atlas.mongodb.com/security-whitelist/
我尝试过的事情:
- 通过设置一个包罗万象的 IP 地址:0.0.0.0/0 在我的 mongo db atlas 中将所有 IP 地址列入白名单
- 将我的特定 IP 地址列入白名单
- 更改我的密码并进行设置非常不安全,并将其直接添加到 uri 字符串中,以确保这不是凭据问题。
- 注释所有其他代码行以仅测试 uri 字符串。
- 使用默认端口号 3000
我的 Index.js 文件
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
// CORE MIDDLEWARE
app.use(express.static('public'));
// CUSTOM MIDDLEWARE
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
// MONGO/MONGOOSE
mongoose.connect
(`mongodb+srv://myUsername:MyPassword@ClusterName.id9lz.mongodb.net/database-
name?retryWrites=true&w=majority`, {
useNewUrlParser: true,
useUnifiedTopology: true
})
const port = 5000 || process.env.PORT;
app.listen(port, () => {
console.log(`Listening to port ${port}...`)
})
注意:我已经从这个问题中删除了所有多余的代码,例如依赖项等,因此更容易解析并更快地找到答案。我完全没有想法。我什至不知道还能尝试什么。提前谢谢你
【问题讨论】:
-
您是否正在尝试与 root/main atlas 用户连接?尝试创建一个只有您需要的权限的新用户。这发生在我身上一次。
-
没用。我现在完全没有想法
-
您好,再次阅读并查看您的代码后,我的问题可能是您没有处理函数返回的承诺,请尝试以下答案中@Diego 发布的内容
-
我已经尝试将它包含在一个承诺中。我以前不需要这样做,但即使这样做,问题仍然存在。我开始认为可能最近对 atlas 进行了更改,我需要做一些新的事情,因为没有任何效果
-
在URI字符串的最后,尝试删除最后一个选项
?retryWrites=true&w=majority。我总是在没有这些选项的情况下进行连接,并且对我来说效果很好。
标签: node.js mongodb express mongoose rest