流星观察者有两种不同的应用

时间:2015-09-16 13:13:21

标签: mongodb meteor reactive-programming

因为需要在应用程序B中实时显示已更改的数据(由应用程序A插入),所以我们决定使用.find().observe(...)

看起来像:

App A   ->    Insert   ->   mongodb    <- observe  -> publish   -> Display App B

这样可以正常工作但是在插入A和显示B之间有大约3-5秒的延迟。我该如何更改?

最初我认为,Oplog-Observe-Driver默认为Meteor&gt;版本1并确实做出实时反应。它仍然是POLL还是有其他原因导致延迟????

感谢您的扩展。

2 个答案:

答案 0 :(得分:1)

如果您正在使用Oplog,则会立即进行更改。如果您正在使用民意调查,那么您在写作时需要几秒钟。 您需要正确设置MONGO_OPLOG_URL才能使其正常工作。 (当然,您的MongoDB需要启用Oplog。)

此外,如果您处于被动反应中,则不需要使用find().observe()find()就足够了。在服务器上,您可能需要find().observe(),具体取决于您正在做什么。

答案 1 :(得分:0)

您使用DDP.connect了吗?您还必须使用onReconnect

Remote = DDP.connect('http://yourremoteserver');
MyCollection = new Mongo.Collection('same_name', Remote);

// do whatever you need with collection

let watchCollection = function (query={}, project={}) {
  return MyCollection.find(query, project).observe({
    changed: function () { console.log('Something changed!') }
  });
}
DDP.onReconnect(watchCollection);