[英]Read from secondary replica set in mongodb through javascript
我有 2 個 mongo 實例在 2 個不同的服務器(一個主服務器和其他輔助服務器)上運行; 我可以使用此連接代碼從主服務器檢索文檔:
var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin');
但是,當我嘗試從輔助服務器檢索文檔時,出現以下錯誤:
{ [MongoError: not master and slaveOk=false]
name: 'MongoError',
消息:'不是 master 和 slaveOk=false',
好的:0,
errmsg: '不是 master 和 slaveOk=false',
代碼:13435 }
我也嘗試使用代碼:
var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin&slaveOk=true');
我錯過了什么?
由於您正在嘗試從 DB 級別的 Secondary 中讀取數據。 您應該在副本集的連接 URL 中指定 readPreferences "secondaryPreferred"。
您可以參考此文檔,其中詳細描述了如何執行此操作。
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");
}
});
MongoClient.connect( 'mongodb://ip/mongo-primary:27017,ip/mongo-secondary-1:ip/mongo-secondary-2:27017,ip/mongo-secondary-3:27017?readPreference=secondaryPreferred', {useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) { var db = client.db('viajydb'); db.collection('customers').findOne({}, function (findErr, result) { if (findErr) throw findErr; console.log(result.name); client.close(); }); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.