在服务器端为mongodb更改编写一个监听器

时间:2016-01-09 21:16:02

标签: javascript node.js mongodb replicaset

我想为mongoDB中的一个集合编写一个监听器,用于服务器端的nodejs app。我正在使用Robe来获取oplog。这是我的代码:

  var co = require('co'),
    Robe = require('robe');

  co(function*() {
    // connect to db
    var db = yield Robe.connect('mongodb://localhost/');
    yield collection.addWatcher(function(collectionName, operationType, data) {
      console.log(collectionName)
    });
    var oplog = yield db.oplog();
    yield oplog.start();
    // listen for any operation on any collection
    oplog.onAny(function(collectionName, operationType, data) {
      console.log("something happened!!!")
    });
  })
    .catch(function(err) {
      console.error(err);
    });

Robe的文档说要获取oplog,我需要连接到mongoDB中的副本集。我一直在阅读mongoDB上的副本集,我并没有对它有太多的了解。我确实创建了一个名为“rs0'”的副本集。我运行此命令启动mongod:

         mongod --replset "rs0"

在更改数据库时,它仍然没有做任何事情。这真的是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

我明白了。您需要启动replset。在MongoDb终端中,键入:

        rs.initiate()

还要确保连接到db的正确主机名。

答案 1 :(得分:0)

每当使用replSet配置启动mongod实例时,您必须使用rs.initiate()命令启动副本集,然后添加副本集成员。

使用驱动程序客户端连接到副本集时,请提供副本集mongod主机的完整列表,以便我们可以利用副本集的自动故障转移。