因为需要在应用程序B中实时显示已更改的数据(由应用程序A插入),所以我们决定使用.find().observe(...)
。
看起来像:
App A -> Insert -> mongodb <- observe -> publish -> Display App B
这样可以正常工作但是在插入A和显示B之间有大约3-5秒的延迟。我该如何更改?
最初我认为,Oplog-Observe-Driver默认为Meteor&gt;版本1并确实做出实时反应。它仍然是POLL还是有其他原因导致延迟????
感谢您的扩展。
答案 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);