2016-09-29 48 views
1

我有2個mongo實例在2個不同的服務器(一個主要和其他輔助)運行;我能夠使用此連接代碼從主服務器檢索文檔:通過javascript從MongoDB的輔助副本集讀取

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

由於您試圖在數據庫級別讀取輔助數據。您應該在副本集的連接URL中指定readPreferences「secondaryPreferred」。

你可以參考這個文檔,裏面詳細描述瞭如何做到這一點。

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

謝謝!有效 –