Prova a utilizzare le seguenti opzioni:
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"
}
});
Mentre la documentazione specifica ping
come strategia predefinita, sembra che Mongoose richieda di specificarne uno quando usi readPreference
.
Nota anche che secondaryPreferred
non è la stessa cosa di nearest
. secondaryPreferred
preferisce leggere i membri secondari (come suggerisce il nome) indipendentemente dalla latenza della rete, dove nearest
dà la priorità alle letture al membro con la quantità più bassa di latenza di rete.
A parte un errore di configurazione nel set di repliche, assicurati che il tuo primario sia online e raggiungibile:per impostazione predefinita Mongoose rifiuterà di utilizzare un secondario se il primario è offline.