副本集的PrimaryPreferred首选项不起作用

时间:2014-06-26 15:48:07

标签: node.js mongodb

假设我有两个服务器用于同一个mongodb副本集 - 一个使用mongodb主服务器,另一个服务器使用辅助服务器和仲裁服务器。我使用Node.JS来访问db(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并且标签未定义。我该怎么办?

1 个答案:

答案 0 :(得分:0)

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

此致 Sheraz Javed