假设我为同一个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查询未定义和标记未定义。我该怎么办 ?
是你能解决这个问题?除非您的部署与您复制的[示例代码](http://mongodb.github.io/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences)相同,否则听起来好像您可能拥有您的参数不匹配(因为ReadPreference未定义)。如果您仍然遇到问题,我会发布您的确切代码(使用主机名称编辑)。 – Stennie