我想为服务器端上的nodejs应用编写一个监听器,以更改mongoDB中集合的更改。我正在用罗布(Robe)来获得机会。这是我的代码:
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"
更改数据库后,它仍然没有执行任何操作。这真的是正确的方法吗?
最佳答案
每当使用replSet配置启动mongod实例时,都必须使用rs.initiate()
命令启动副本集,然后添加副本集成员。
当使用驱动程序客户端连接到副本集时,请提供副本集mongod主机的完整列表,以便我们将利用副本集的自动故障转移的优势。