首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果集合是在meteor应用程序之外修改的,为什么meteor Tracker.autorun()会延迟检测mongodb的更改

如果集合是在meteor应用程序之外修改的,为什么meteor Tracker.autorun()会延迟检测mongodb的更改
EN

Stack Overflow用户
提问于 2016-02-28 06:58:52
回答 1查看 226关注 0票数 1

一个非常简单的场景:在本地meteor (v1.2.1)开发环境(WebStorm)中,我有一个单独的MongodbDB (v3.0.4)集合'Letters‘。我希望在此集合中添加、删除或修改任何文档时立即作出响应。

为此,我有以下自动运行函数:

代码语言:javascript
复制
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秒才能检测到此更改,并且相应的控制台消息会出现在浏览器中。为什么它花了这么长时间,而不是几乎是瞬间完成的?

EN

回答 1

Stack Overflow用户

发布于 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!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35676514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档