连接到具有另一台主机中的副本集的mongodb集群时出错

时间:2018-10-15 07:27:12

标签: node.js linux mongodb

我在暂存环境中有一个nodejs应用程序,该应用程序需要运行MongoDB复制集。我已经创建了如下的MongoDB实例:

$ mongod --port 27017 --replSet rs0 --dbpath /data/db1 --smallfiles --oplogSize 128
$ mongod --port 27018 --replSet rs0 --dbpath /data/db2 --smallfiles --oplogSize 128
$ mongod --port 27019 --replSet rs0 --dbpath /data/db2 --smallfiles --oplogSize 128

并将db1设置为主。该应用程序还运行在同一主机上,并按如下所示连接到数据库:

const { connectionString, replicaSet } = config.mongodb;

try {
  mongoose
    .connect(
      connectionString,
      {
        useNewUrlParser: true,
        replicaSet,
      },
    )
    .then(() => mongoose.connection.db.admin().command({ setFeatureCompatibilityVersion: '4.0' }));

connectionStringmongodb://localhost:27017/x。 现在,我在计算机上运行应用程序,并希望将其连接到主机数据库,因此我将connectionString更改为:mongodb://172.16.25.66:27017/x,但MongoNetworkError: failed to connect to server [localhost:27019] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27019]令我感到困惑,为什么记录了127.0.0.1:29019?我认为应该是主机IP地址不在本地? 如何解决此问题,以便我可以使用本地应用程序连接到暂存主机MongoDB?

修改

如果Ip在上面的代码中放入console.log(connecitonString),则结果将与输入的结果相同。 但是我发现了一些有趣的事情,当我删除replicaSet函数中的connect选项时,它可以正常工作!有人可以解释吗?

0 个答案:

没有答案