我的配置如下,我的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变成PRIMARY就好像我做了一个rs.status()。在此之后,我无法再进行任何查询并继续获取以下内容:
错误:没有打开连接
我确信我在本地计算机上正确设置了副本集,因为我使用MongoDB本机驱动程序来测试上面提到的场景(将PRIMARY和SECONDARY取下来作为PRIMARY)并且没有问题。
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;
}
});
答案 0 :(得分:0)
好的,我找到了答案。由于session.js而发出此消息。我评论了文件中的所有内容,现在它正在运行。我猜的原因是在session.js中,它只指向一个主机,这是原始的PRIMARY。当你关闭这个mongodb PRIMARY时,session.js不再能连接,所以它抛出了异常。我还在sessions.js中尝试了mongodb URL字符串,同时放入副本集中的hosts ip(mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019 / mydb)但是没有“帆升”。当只放置单个主机然后它是好的。
现在如果我需要存储会话信息,我需要启动另一个mongodb实例,然后session.js指向这个新的瞬间。