Prova att använda följande alternativ:
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"
}
});
Medan dokumentationen anger ping
som standardstrategi verkar det som att Mongoose kräver att du anger en när du använder readPreference
.
Observera också att secondaryPreferred
är inte samma sak som nearest
. secondaryPreferred
föredrar avläsning av sekundära medlemmar (som namnet antyder) oavsett nätverkslatens, där nearest
prioriterar läsningar till medlemmen med den lägsta mängden nätverkslatens.
Bortsett från en felaktig konfiguration i din replikuppsättning, se till att din primära är online och nåbar - som standard kommer Mongoose att vägra använda en sekundär om den primära är offline.