【问题标题】:I can't connect my express rest api to mongo db atlas, using mongoose我无法使用 mongoose 将我的 express rest api 连接到 mongo db atlas
【发布时间】: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


【解决方案1】:

我以前也遇到过这种情况,我不知道为什么,但是,2小时后,它又开始正常工作了,我唯一想到的是我的互联网有点弱......但是我真的不知道为什么会这样。

但是,你应该尝试改变你想将你的服务器连接到 mongoDB 的方式,我曾经这样做,但是过了一段时间,我遇到了一些问题。

所以,试着像这样改变它

const port = 5000 || process.env.PORT;

mongoose.connect
(`mongodb+srv://myUsername:MyPassword@ClusterName.id9lz.mongodb.net/database- 
 name?retryWrites=true&w=majority`, {
  useNewUrlParser: true,
  useUnifiedTopology: true
 }).then(() => {

 app.listen(port, () => {
  console.log(`Listening to port ${port}...`)
 })

console.log('MongoDB connected correctly')

})

另外,在尝试连接到 MongoDB 时,请确保您的凭据正确

希望我能帮到你一点!

【讨论】:

    猜你喜欢
    • 2019-04-04
    • 2020-12-25
    • 2019-12-30
    • 2018-08-01
    • 2022-12-21
    • 2020-02-22
    • 2020-07-25
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多