2016-09-29 2 views
1

У меня есть экземпляр mongo, работающий на двух разных серверах (один первичный и другой вторичный); Я могу получить документ с основного сервера с помощью этого соединения код:Чтение из набора вторичной реплики в mongodb через javascript

var db = mongojs('user:[email protected]:27017/mydb?authSource=admin'); 

Но когда я пытаюсь извлечь документ из вторичного сервера, я получаю следующее сообщение об ошибке:

{ [MongoError: not master and slaveOk=false]
name: 'MongoError',
message: 'not master and slaveOk=false',
ok: 0,
errmsg: 'not master and slaveOk=false',
code: 13435 }

Я также пробовал использовать код:

var db = mongojs('user:[email protected]:27017/mydb?authSource=admin&slaveOk=true'); 

Что мне не хватает?

ответ

3

Поскольку вы пытаетесь читать из Secondary на уровне DB. Вы должны указать readPreferences «secondaryPreferred» в URL-адресе подключения для своего набора реплик.

Вы можете сослаться на этот документ, в котором подробно описывается, как это сделать.

Read Preferences with MongoDB Node.JS Driver

var MongoClient = require('mongodb').MongoClient 
    , format = require('util').format; 

var url = format("mongodb://%s,%s,%s/%s?replicaSet=%s&readPreference=%s" 
    , "localhost:27017", 
    , "localhost:27018" 
    , "localhost:27019" 
    , "exampleDb" 
    , "foo" 
    , "secondaryPreferred"); 

MongoClient.connect(url, function(err db) { 
    if(!err) { 
    console.log("We are connected"); 
    } 
}); 
+0

Спасибо! Это сработало –

Смежные вопросы