【问题标题】:getting ReplicaSetNoPrimary and MongoServerSelectionError error while connecting MongoDB with nodejs将 MongoDB 与 nodejs 连接时出现 ReplicaSetNoPrimary 和 MongoServerSelectionError 错误
【发布时间】:2020-05-20 15:51:30
【问题描述】:

我正在尝试连接到 mongodb,但出现以下错误,请您帮忙

var mongo = require('mongodb').MongoClient;
mongo.connect('mongodb://usernamexyz:passwordxyz@hostmxy-mw-e6-u1238.nam.nsroot.net:47017/sampleDB?replicaSet=NAME_2436&readPreference=primary&authSource=admin&w=1', { useNewUrlParser: true, useUnifiedTopology: true  })
.then(() => console.log("Mongodb connected"))
.catch(err => console.log(err));

我得到的错误如下

MongoServerSelectionError: connection <monitor> to 155.30.360.129:37017 closed
    at Timeout._onTimeout (C:\Fintech\NodeFirstApp\node_modules\mongodb\lib\core\sdam\topology.js:448:30)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7) {
  name: 'MongoServerSelectionError',
  reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    setName: null,
    maxSetVersion: null,
    maxElectionId: null,
    servers: Map {
      'hostmxy-mw-e6-u1238.nam.nsroot.net:47017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    compatibilityError: null,
    logicalSessionTimeoutMinutes: null,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    commonWireVersion: null
  },
  [Symbol(mongoErrorContextSymbol)]: {}
}

【问题讨论】:

  • 你能从 Mongo Shell 连接到副本集吗?

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

我也遇到了同样的错误。我正在使用另一个wifi。但是当我将我的笔记本电脑与我之前使用的相同 wifi 连接时,我的 mongodb 再次连接。

【讨论】:

  • 这是作为答案发布的,但并不试图回答这个问题。可能应该是评论。
  • 你在哪里添加的?
【解决方案2】:

我在连接到 MongoDB 地图集时也遇到了同样的错误。 你必须做以下事情。 1. 允许系统中防火墙的出站端口 27015-27017。 2.更新最新的MongoDB和NodeJs。 3. 将您的系统IP在网络访问下的MongoDB atlas集群中列入白名单。

它对我有用。我希望它也对你有用。

【讨论】:

    【解决方案3】:

    正如 Jay 先生所说,如果您的 IP 地址与您在 Atlas 帐户中注册的地址不同(例如,如果您没有使用静态 IP),也会发生这种情况。

    在您的 MongoDB Atlas 帐户中检查“网络访问”并与您当前的 IP 进行比较。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,但通过简单地更正我的 IP 地址来解决它 使用此网站检查您的 IP 地址 - https://www.whatismyip-address.com/?check

      【讨论】:

        【解决方案5】:

        转到您创建集群的 Mongodb 并在 ipwhitelist 下单击编辑 IP 地址按钮,然后选择 Add ccurrent IP address

        这对我有用

        【讨论】:

        • 经过一个小时的努力试图找出问题所在,这个答案让我摆脱了所有的痛苦。我在一个新的网络上。谢谢。
        • 这很容易忘记。用户每次切换时都必须添加新网络。
        【解决方案6】:

        我遇到了防火墙问题,以下是我遵循的步骤:

        1. 搜索具有高级安全性的 Windows 防火墙
        2. 选择Outbound Rules
        3. 选择New Rule
        4. Rule Type中选择Port,点击下一步
        5. 选择TCPSpecific remote ports并在里面写27015-27017
        6. 保存规则 这对我有用:)

        【讨论】:

          【解决方案7】:

          将通过单击“添加当前 IP 地址”获得的 IP 列入白名单给了我同样的错误。但是,将显示的 IP 地址列入白名单 https://www.whatismyip.com/https://whatismyipaddress.com/https://nordvpn.com/what-is-my-ip/ 解决了我的问题。

          【讨论】:

            【解决方案8】:

            更新“网络访问”对我不起作用。对我有用的是通过“自动生成安全密码”更新“数据库访问”并确保单击“更新用户”以保存新密码!

            MongoDB Atlas > 数据库访问 > 完成图片中的 3 个步骤

            【讨论】:

              猜你喜欢
              • 2020-07-06
              • 2021-08-15
              • 1970-01-01
              • 2020-10-02
              • 2020-10-26
              • 2015-05-31
              • 2019-12-17
              • 1970-01-01
              相关资源
              最近更新 更多