我在暂存环境中有一个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' }));
connectionString
是mongodb://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
选项时,它可以正常工作!有人可以解释吗?