【问题标题】:PrimaryPreferred preference for replica set not working副本集的 PrimaryPreferred 首选项不起作用
【发布时间】:2014-07-11 15:15:52
【问题描述】:

假设我有两台服务器用于同一个 mongodb 副本集 - 一台具有 mongodb 主服务器,另一台具有辅助服务器和仲裁器。我使用 Node.JS 访问数据库(https://github.com/mongodb/node-mongodb-native)。在我手动断开这些服务器之间的连接后,由于仲裁器,主服务器变为辅助服务器,辅助服务器成为主服务器。现在,我想被允许从中学阅读。我的代码如下:

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"
  , "primaryPreferred");

MongoClient.connect(url, function(err db) {
  if(!err) {
    console.log("We are connected");

    var collection = db.collection('somecollection');
    collection.find({}).toArray(function(err, items) {
      // Done reading from secondary if available
    })
  }
});

但它说没有副本集成员可用于未定义 ReadPreference 和未定义标签的查询。我该怎么办?

【问题讨论】:

  • 您能否解决此错误?除非您的部署与您复制的 example code 相同,否则听起来您的参数可能不匹配(因为未定义 ReadPreference)。如果您仍然遇到问题,我会发布您的确切代码(已编辑主机名)。

标签: node.js mongodb


【解决方案1】:

我认为你需要设置 slaveOk: "true"。这将启用辅助查询,然后您就可以查询了。

问候, 谢拉兹·贾维德

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-02
  • 2013-07-25
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
相关资源
最近更新 更多