在 Meteor 中组织我的订阅的最佳模式,没有发现数据未准备好的风险

The best pattern to organize my subscriptions in Meteor without the risk to find the data not ready

我在这里阅读了一些关于如何在 Meteorjs 中组织订阅的 posts,但我仍然不明白什么是最好的模式来避免发现我订阅的一些数据还没有准备好在模板中使用。我使用 Iron Router,现在我使用 Router.configure 中的 waitOn 选项组织了所有订阅。我发现这种方式有时无济于事。如果我有多个这样的订阅:

Router.configure({
    layoutTemplate: 'layout',
    loadingTemplate: 'loading',
    waitOn: function () {
        return [
            Meteor.subscribe('channels'),
            Meteor.subscribe('invitations'),
            Meteor.subscribe('messages')
        ];
    } 
});

我明白顺序很重要。如果我更改数组中订阅的顺序,程序会做出不同的响应。 我想要得到的是,在浏览应用程序之前,我的所有订阅都已完全加载。 之前 post 中有人谈到将它们放在一个单独的文件中以解决此问题。但是怎么办?我需要将该文件放在哪里? 我希望能在这里为我的案例提供一些示例。

随着 Meteor 1.0.4 的发布,模板实例现在有一个订阅方法,其工作方式与 Meteor.subscribe 完全相同,请查看 this release 注释以获取有关

的更多信息

因此您可以像下面的示例一样在 onCreated 中使用该订阅。

Template.notifications.onCreated(function () {
  this.subscribe("channels");
  this.subscribe("invitations");
  this.subscribe("messages");
});

检查 Meteor Docs 关于 subscriptionsReady()