在 Meteor 中订阅数据范围

Subscribe to data range in Meteor

我有一个 Meteor 应用程序,它显示日历(使用 fullcalendar.io),并订阅给定日期范围内的预订。该应用程序使用 FlowRouter 并从 URL 中获取日期,然后使用它来订阅预订(URL 日期到 URL 日期 + 14 天)。这一切都很好,我可以跳过日历中的每一天,加载每天的事件而不刷新,因为它们来自 minimongo。我想做的是在用户切换日期时在后台刷新此订阅。这可以使用流量路由器,例如:

FlowRouter.go('/diary/2017-04-11')

或者通过在 Session / Reactive 变量中设置订阅日期。

这将加载从 2017-04-11 到 2017-04-25 的事件。问题在于,由于重新创建了整个订阅,因此在加载时会有轻微的延迟。我想要实现的是 'moving window' - 例如,如果我订阅了 2017-04-10 的事件并将发布更改为 2017-04-11,那么只会加载额外的 1 天,而不是删除和替换所有数据。这将确保我能够在没有任何加载时间的情况下跳过日历中的日子。如果用户手动选择一个 > 14 天后的日期,那么他们会看到加载时间,这是完全可以接受的。

听起来您的订阅与每次路线更改时加载的模板相关联。然后,当您切换路由时,将重新加载模板和订阅。

缓存管理器有几个选项,可以让您跨模板保持子活动。

例如https://github.com/kadirahq/subs-manager

请注意,虽然这将允许您的客户端像我所描述的那样保持潜艇处于活动状态,但它可能会在 "additive" 函数中工作。因此它本身不会解决您的移动 window 问题,但它会在您导航时从发布者处获取新项目。

第二个注意事项:使用此软件包,您不仅限于一位经理。我发现如果你保留一名经理/副手,效果最好。一旦我开始向管理器加载多个潜艇,它就会开始表现得很奇怪。