簡體   English   中英

通過javascript從mongodb中的輔助副本集讀取

[英]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"。

您可以參考此文檔,其中詳細描述了如何執行此操作。

使用 MongoDB Node.JS 驅動程序讀取首選項

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM