1

有人可以告诉我为了从给定页面访问集合中的数据,我可能会丢失什么吗?我可以访问活动集合,但不能访问场地之一 - 这是代码:

//Controller

UserController = AppController.extend({
  waitOn: function() {
    return this.subscribe('events');
    return this.subscribe('users');
    return this.subscribe('venues');
  },
  data: {
    venues: Venues.find({}),
    events: Events.find({}),
    users: Meteor.users.find()

  }
});

UserController.helpers({
    'myEvents': function() {
        var organizerId = Accounts.userId();
        return Events.find({organizerId: organizerId})
    },
    'myVenues': function() {
        return Venues.find({})
    }
});

活动和场所的发布和许可文件相同,控制器被路由到正确的页面,并且场所集合从具有其他控制器的页面可见。

感谢您的时间!

4

1 回答 1

1

您无法访问该Venue集合的原因是您没有订阅它。return this.subscribe('events');函数中后面的两个语句waitOn是死代码,因为 return 语句会终止一个函数。因此,您需要返回一个订阅数组:

UserController = AppController.extend({
  waitOn: function() {
    return [Meteor.subscribe('events'), Meteor.subscribe('users'), Meteor.subscribe('venues')];
  },
  data: {
    venues: Venues.find({}),
    events: Events.find({}),
    users: Meteor.users.find()
  }
});

请注意:我注意到您的辅助函数中缺少两个分号。我强烈建议修复这个问题,因为这可能会导致您的 Meteor 应用程序发生意外操作,因为部署过程会缩小。

于 2015-12-05T19:58:12.507 回答