選項1: 你可以追加slaveOk的端到端連接,URI的。 readPreference告訴mongodb你想如何讀取數據,slaveOk指示可以從輔助數據中讀取(重複數據),但是可以工作。
例如
mongodb://mongo-1:27017,mongo-2:27017,mongo-3:27017,mongo-4:27017,mongo-5:27017/db?replicaSet=main&readPreference=nearest&slaveOk=true
請參閱&slaveOk=true
並結束URI。
https://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html#read-preference
選項2: 如果上述方案不能正常工作,則需要修改代碼:
var client = require('mongodb').MongoClient;
var uri= "mongodb://mongo-1:27017,mongo-2:27017,mongo-3:27017,mongo-4:27017,mongo-5:27017/db?replicaSet=main";
請注意,我已經修改連接URI。我沒有在Uri中設置readPrefference,而是將它移動到MongoClient.connect中作爲db選項。
var options = {db:{readPreference:"ReadPreference.NEAREST"}};
client.connect(uri, options, function(err, db){
if(err){
console.log(err);
return;
}
db = db.collection('data');
db.findOne({}, function(err, result){
console.log(result);
});
});
我已經在nodejs 2.2驅動程序中測試過,跳過它也應該在2.0版本中工作。
這就是我如何開始,它沒有工作。我相信slaveOk現在已經過時,readPreferences取而代之。 – machunter
謝謝@machunter。我剛剛更新了我的答案。如果可能,你可以嘗試**選項2 **。由於您需要修改代碼,因此我不確定它是否可行且易於實現解決方案。 – Saleem
我還沒有嘗試過,因爲我希望只是修改URI就足夠了......更改代碼不是最實際的方法。 – machunter