【发布时间】: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)。如果您仍然遇到问题,我会发布您的确切代码(已编辑主机名)。