一个非常简单的场景:在本地meteor (v1.2.1)开发环境(WebStorm)中,我有一个单独的MongodbDB (v3.0.4)集合'Letters‘。我希望在此集合中添加、删除或修改任何文档时立即作出响应。
为此,我有以下自动运行函数:
Template.diagram.rendered = function(){
Tracker.autorun(function () {
Letters.find({}).observe({
added: function(document) {
console.log('a new document has been added');
},
changed: function(newDocument) {
console.log('a document has been changed');
},
removed: function(document) {
console.log('a document has been removed');
}
});
})
}当从同一应用程序中添加新文档时,我可以立即看到控制台消息(流星延迟补偿)。但是,当我使用外部工具(Robomongo)连接到相同的MongoDB数据库,并添加、更改或删除“Letters”集合中的文档时,大约需要6-10秒才能检测到此更改,并且相应的控制台消息会出现在浏览器中。为什么它花了这么长时间,而不是几乎是瞬间完成的?
发布于 2016-02-28 09:41:33
一旦我在meteor论坛上发布了这个问题,我就被指向了2014年的一篇meteor博客文章,其中描述了oplog尾随功能,以及它只在dev实例中默认打开的事实。这让我意识到,通过在我的开发应用程序中使用MONGO_URL环境变量,我强制我的meteor应用程序与MongoDB实例一起工作,该实例一直在我的mac上运行,独立于我的meteor开发,因此,被我的meteor应用程序视为“生产”。一旦我将应用程序切换到使用ad-hock mongo connection / db,oplog结尾就生效了,我开始看到即时的事件传播到浏览器。感谢来自流星论坛的@dburles!
https://stackoverflow.com/questions/35676514
复制相似问题