环回事件流跟踪服务器端模型中的更改

时间:2017-03-31 10:12:20

标签: node.js mongodb loopbackjs strongloop event-stream

我遇到了一种情况,我想要同步两个mongoDB,一个是本地机器,第二个是远程(在mlab沙箱上)。同步,我正在做:

首先我使用mongodump转储有变化的集合 接下来使用mongorestore我将在远程MongoDB上恢复该集合。

但我面临两个问题。

首先是如何在远程mongoDB上更新集合。 例如:在更改集合上我应该替换远程端的整个集合还是使用其他方式?什么是最好的方式。

第二个问题是我如何检测集合中的变化。或者在整个数据库中。我正在使用loopback框架和事件流npm模块将更改发送到客户端。但我无法在服务器端读取更改流。

我的server \ boot \ realtime.js是:

var es = require('event-stream');
var sync = require('../sync');

module.exports = function(app) {

  var completeOrder = app.models.completeOrder;

  completeOrder.createChangeStream(function(err, changes) {

   sync('completeOrder',function(data){

      console.log(data);
    },function(err){

      console.log(err);
    });
   changes.pipe(es.stringify()).pipe(process.stdout);
  });

}

1 个答案:

答案 0 :(得分:0)

第二个问题LoopBack在底层数据库中的数据发生变化时不发送事件,但仅在模型发生变化时才发送。 Mongo 3.6提供了更改流功能,您可以使用它来触发模型更改/执行功能。