我已配置如下,我的mongodb不需要用户名或密码:

mongo: {
    module: 'sails-mongo',
    url: "mongodb://127.0.0.1:27017/mydb",
    replSet: {
        servers: [
            {
                host: "127.0.0.1",
                port : 27018
            },
            {
                host: "127.0.0.1",
                port : 27019
            }
        ],
        options: {connectWithNoPrimary:true, rs_name:"rs0"}
    }      
}
.

它正常工作,这意味着我没有得到连接错误,我能够做查询。但是当我带到127.0.0.1:27017时,127.0.0.1:27018就像我做了rs.status()一样。在此之后,我不再能够执行任何查询并继续如下:

错误:没有打开连接

我确信我在本地机器中设置了副本设置,因为我使用MongoDB本机驱动程序测试上述方案(将初级和次级带回为主)并且没有问题。

var url = 'mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/mydb?w=0&wtimeoutMS=5000&replicaSet=sg1&readPreference=secondary';

mongodb.MongoClient.connect(url, function(err, result) {
    if(err || result === undefined || result === null) {
          throw err;
    } else {
          db = result;  
    } 
});
.

有帮助吗?

解决方案

好的,我找到了答案。此消息由于Session.js而发出。我评论了文件中的所有内容,现在它正在工作。我猜的是在session.js中,它只指向单个主机,它是原始主的。当您删除此MongoDB主机时,会session.js不再可以连接,因此它抛出异常。我还通过副本集中的主机IP(MongoDB://127.0.0.1:27019,127.0.0.1:27019 / MyDB)来试过Sessions.js中的MongoDB URL字符串。“帆升降机”。当只放单个主机,那么它很好。

现在,如果我需要存储会话信息,我需要启动另一个MongoDB实例然后会session.js指向这个新的即时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top