无法使用Node.js从MongoDB从站读取

时间:2017-11-29 16:46:52

标签: node.js mongodb kubernetes

我在同一方面看过很多问题,但不知怎的,我仍然无法成功连接到MongoDB Slave。

我使用mongo-k8s-sidecar在Kubernetes上运行我的集群,将我的应用程序直接连接到master工作正常,但是每当我尝试连接到slave时,我似乎无法读取,这里是错误代码:< / p>

MongoError: not master and slaveOk=false

我在我的应用程序中使用Node.js,这就是我连接的方式:

var mongodb = require('mongodb').Db;
var Server = require('mongodb').Server
var db = new mongodb('dbname', new Server("localhost",27017,{slaveOk: true}));

        db.open(function(err, conn){
             if (err){
                callback(err);
             }else {
             client=conn;
             client.createIndex("tablename", {field:1}
             , {background:true}, function(err, i) {
                 logger.info(err);
             });
//The rest of the code is trimmed

我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

即使您正在使用slaveOk / ReadPreference.SECONDARY,也无法在辅助成员上运行createIndex()

如果您在没有createIndex()调用的情况下测试代码,您可能会发现它正常运行。

有关详细信息,请参阅Build Indexes on Replica Sets。基本上,如果您想在辅助服务器上构建索引,则需要停止mongod实例,将其作为独立启动(不使用replSet选项),然后构建索引。

或者您只能在主节点上创建索引,并且索引创建将复制到辅助节点。