2016-09-29 15 views
1

2つの異なるサーバー(1つのプライマリと他のセカンダリ)で2つのmongoインスタンスを実行しています。私は、この接続コードを使用して、プライマリサーバから文書を取得することができる午前: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

DBレベルでセカンダリから読み込もうとしているためです。レプリカセットの接続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

ありがとうございます!出来た –

関連する問題