javascript - 在服务器端编写 mongodb 更改的监听器

标签 javascript node.js mongodb replicaset

我想为服务器端的 Nodejs 应用程序编写一个监听器,用于更改 mongoDB 中的集合。我正在使用 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"

在数据库更改时它仍然没有执行任何操作。这真的是正确的方法吗?

最佳答案

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

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

关于javascript - 在服务器端编写 mongodb 更改的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34699038/

相关文章:

javascript - 获取 anchor 内的文本值,但不获取其他 html 元素

javascript - 是否可以将 websocket 重新连接到不同的主机?

javascript - 为什么 ((a(-b)?)(?!Z)) 与 "a-bZ"中的 a 匹配?

node.js - MongoDB 和 API 集成 - 如果不存在则创建新用户

mongodb - Play 2.2.x,带有身份验证和请求扩展的 Action 组合

javascript - 如何在不使用 Google Forms 的情况下将 HTML 表单提交到 Google Sheets

javascript - Webrtc、ICE故障

javascript - NodeJS 回调范围

javascript - 在继续更改 DOM 函数之前如何等待异步数据库调用解析?

javascript - 如何在 Mongoose 中创建/查找?