MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose ne lit pas à partir de la base de données secondaire Mongo

Essayez d'utiliser les options suivantes :

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"
    }
});

Alors que la documentation spécifie ping comme stratégie par défaut, il semble que Mongoose exige que vous en spécifiiez une lorsque vous utilisez readPreference .

Notez également que secondaryPreferred n'est pas la même chose que nearest . secondaryPreferred préfère lire les membres secondaires (comme son nom l'indique) quelle que soit la latence du réseau, où nearest donne la priorité aux lectures vers le membre avec la plus faible latence du réseau.

À moins d'une mauvaise configuration dans votre jeu de réplicas, assurez-vous que votre primaire est en ligne et accessible - par défaut, Mongoose refusera d'utiliser un secondaire si le primaire est hors ligne.