MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose liest nicht aus der sekundären Mongo-Datenbank

Versuchen Sie es mit den folgenden Optionen:

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

Während die Dokumentation ping angibt Als Standardstrategie scheint Mongoose zu verlangen, dass Sie eine angeben, wenn Sie readPreference verwenden .

Beachten Sie auch, dass secondaryPreferred ist nicht dasselbe wie nearest . secondaryPreferred bevorzugt das Lesen von sekundären Mitgliedern (wie der Name schon sagt), unabhängig von der Netzwerklatenz, wobei nearest ist priorisiert Lesezugriffe auf das Mitglied mit der geringsten Netzwerklatenz.

Abgesehen von einer Fehlkonfiguration in Ihrem Replikatsatz, stellen Sie sicher, dass Ihr Primärserver online und erreichbar ist - standardmäßig weigert sich Mongoose, einen Sekundärserver zu verwenden, wenn der Primärserver offline ist.