Я настроил, как показано ниже, и моей 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 для тестирования вышеупомянутого сценария (отключите 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;
}
});