Опитайте да използвате следните опции:
var mongoose = require("mongoose");
var dbUrl = "mongodb://***.***.***.***:27017,***.***.***.***:27017,***.***.***.***:27017,***.***.***.***:27017,***.***.***.***:27017/exampleDb";
mongoose.connect(dbUrl, {
server: {
readPreference: "nearest",
strategy: "ping"
},
replset: {
rs_name: "exampleRepSet",
readPreference: "nearest",
strategy: "ping"
}
});
Докато документацията посочва ping
като стратегия по подразбиране изглежда, че Mongoose изисква да посочите такава, когато използвате readPreference
.
Също така имайте предвид, че secondaryPreferred
не е същото като nearest
. secondaryPreferred
предпочита четене на вторични членове (както подсказва името) независимо от латентността на мрежата, където nearest
приоритизира четенията към члена с най-малко мрежово забавяне.
Освен грешна конфигурация във вашия комплект реплики, уверете се, че основният ви е онлайн и достъпен - по подразбиране Mongoose ще откаже да използва вторичен, ако основният е офлайн.