【问题标题】:MongooseError [MongooseServerSelectionError]: connection <monitor> to 52.6.250.237:27017 closedMongooseError [MongooseServerSelectionError]:连接 <monitor> 到 52.6.250.237:27017 已关闭
【发布时间】:2020-06-11 09:26:27
【问题描述】:

我正在尝试通过 post 方法将数据保存在 mongodb 中,并将 mongodb atlas 与 node.js 一起使用,但它一直给我一个错误,我提供了正确的连接字符串和正确的密码。请帮助解决这个问题。谢谢。

代码如下:

const mongoose = require('mongoose');

const monngodb_url="mongodb+srv://maarij:asdf360@cluster0-j7wis.mongodb.net/authDB?retryWrites=true&w=majority";

mongoose.connect(monngodb_url, {useNewUrlParser: true,useUnifiedTopology: true}).then(()=>{
    console.log("mongodb is connected");
}).catch((error)=>{
    console.log("mondb not connected");
    console.log(error);
});

这是错误:

server is running on port 3000
{ name: 'myName', email: 'e@mail.com', password: 'abcdefg' }
mondb not connected
MongooseError [MongooseServerSelectionError]: connection <monitor> to 52.6.250.237:27017 closed
    at new MongooseServerSelectionError (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\error\serverSelection.js:22:11)
    at NativeConnection.Connection.openUri (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\connection.js:808:32)
    at Mongoose.connect (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\index.js:333:15)
    at Object.<anonymous> (D:\react-native\reactNativeBackend\db\db.js:5:10)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Module.require (internal/modules/cjs/loader.js:848:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (D:\react-native\reactNativeBackend\index.js:4:19)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10) {
  message: 'connection <monitor> to 52.6.250.237:27017 closed',
  name: 'MongooseServerSelectionError',
  reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    setName: null,
    maxSetVersion: null,
    maxElectionId: null,
    servers: Map {
      'cluster0-shard-00-01-j7wis.mongodb.net:27017' => [ServerDescription],
      'cluster0-shard-00-02-j7wis.mongodb.net:27017' => [ServerDescription],
      'cluster0-shard-00-00-j7wis.mongodb.net:27017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    compatibilityError: null,
    logicalSessionTimeoutMinutes: null,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    commonWireVersion: null
  },
  [Symbol(mongoErrorContextSymbol)]: {}
}

【问题讨论】:

  • 您可能想删除此问题,然后在删除登录凭据和 url 的情况下再次询问。
  • 这显然是一个假密码,伙计们。看看你的键盘,从“A”开始。错误消息 echo 是整行,而它上面的 monngodb_url 行使用不同的变体,以相同的 4 个非随机字符开头。最后但同样重要的是,主机名 cluster0-j7wis.mongodb.net 不存在。
  • @double-beep:您错过了实际密码所在的行,即monngodb_url 值。

标签: node.js mongodb


【解决方案1】:

我遇到了同样的问题,但我成功解决了。 在您的 MongoDB 帐户上,检查您选择连接应用程序的 IP。

如果您开始使用初始 IP 并尝试使用另一个 IP 地址将无法正常工作。

在 mongoDB 中:

NetworkAccess/(验证您注册的 IP 与您实际使用的 IP 相同)。您可以选择:添加IP地址

【讨论】:

  • 谢谢。这节省了我 2.5 小时的无用努力。您实际上必须将您的 IP 列入白名单。
【解决方案2】:

你的 index.js app.use(cors()) 中有这行吗?

尝试删除此行并删除所有涉及 cors 的内容。

如果这不起作用,请尝试 Mehdi Berra 的解决方案

【讨论】:

    【解决方案3】:

    您可以通过进入网络访问面板来解决此问题

    然后点击添加 IP 地址

    & 然后填写 0.0.0.0/0 然后点击确认

    不要在生产中这样做,但在开发中,它会起作用

    【讨论】:

    • 不确定它是否是最好的解决方案,但它的快速广告对我有用!谢谢
    • Hey Avi,这是用于开发目的的快速解决方案,这只是为了提醒您,当您在开发中时请删除它或使用另一台服务器进行生产,不要在生产中添加它.仅添加服务器的 IP 地址
    • 对我来说,我不得不两次删除/添加allow all,但直到我包含my-curent-ipallow all - 在我删除my-curent-ipallow all 之后它仍然没有工作工作...... Mongo Atlas的东西......
    • 您可以(并且应该)使用您当前的 IP 地址而不是 0.0.0.0/0。它不仅是您的设备独有的,而且比允许所有 IP 更独特。
    • @enkicoma 我同意你的看法。我添加了全部允许和 my-current-ip 后它开始工作了。然后我删除了 my-current-ip
    【解决方案4】:

    我遇到了类似的问题。 'Go to network access' -> 'IP whitelist' -> 你只能从这些 IP 地址连接到你的集群,所以如果你的 IP 不在该列表中

    然后点击“添加IP地址”按钮->点击“添加您当前的IP地址”按钮。

    【讨论】:

    • 这应该是正确答案,最高答案不安全?‍♂️
    【解决方案5】:

    这可能是因为你机器的 IP 改变了,它不应该在生产中发生,但要修复它,你需要进入网络访问面板 -> 添加 IP 地址并点击“添加此 IP 地址”,然后's 去工作,直到它再次改变。

    【讨论】:

    • 这是我的问题,使用 next-auth 连接到 mongodb
    【解决方案6】:

    在大多数情况下,投票最多的解决方案不起作用。您应该首先按照“Aka”解决方案的步骤操作,然后删除您的 node_modules 文件夹。之后,只需运行npm i 重新安装所有依赖项,你应该可以继续,考虑到你已经在package.json 中注册了依赖项

    【讨论】:

      【解决方案7】:

      这里的主要问题是Mongodb Atlas。有效的方法 我是删除MongoDB网络部分的现有IP地址 Atlas,然后重新添加。

      【讨论】:

        【解决方案8】:

        我认为,如果您在 mongodb 的网络访问选项卡中删除或添加新的 IP 地址,您的项目将无法成功运行,直到您不会刷新服务器主文件(index.js)。 因为很多时候我添加了一个新的 IP 地址,所以在我刷新 index.js 之前它不起作用

        谢谢

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-22
          • 2022-11-19
          • 2021-12-18
          • 2021-04-15
          • 2022-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多