2015-09-16 22 views
0

由於需要在應用程序B中實時顯示更改的數據(由應用程序A插入),因此我們決定使用.find().observe(...)有兩種不同應用的流星觀測器

它看起來像:

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

這工作得很好,但它具有約3-5秒內插入和B.顯示我怎樣才能改變這之間的延遲?

最初我認爲,Oplog-Observe-Driver在Meteor> Version 1中是默認的,並且會實時做出反應。它仍然是POLL還是有其他一些延遲原因?

感謝您的期望。

回答

1

如果您使用Oplog,則更改將立即生效。如果您正在使用民意調查,那麼在您撰寫時需要幾秒鐘的時間。 您需要正確設置MONGO_OPLOG_URL才能完成此項工作。 (當然,您的MongoDB需要啓用Oplog。)

另外,如果處於被動環境中,則不需要使用find().observe()find()就足夠了。在服務器上,雖然你可能需要find().observe(),這取決於你在做什麼。

+0

這聽起來像一個解決方案。我如何設置OPLOG_URL並啓用Oplog? – elCapitano

+0

這是解決方案。看看這個:https://meteorhacks.com/mongodb-oplog-and-meteor: 'MONGO_OPLOG_URL = mongodb:// user:pass @ host1:port,host2:port,host3:port/local' –

+1

或可能是這樣的:https://gentlenode.com/journal/meteor-10-set-up-oplog-tailing-on-ubuntu/17 –

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);