meteor.js - 将控制器设置为访问集合

meteor.js - set controller to access collection

有人可以告诉我我可能缺少什么才能从给定页面访问集合中的数据吗?我可以访问事件集合,但不能访问场地集合 - 这是代码:

//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({})
    }
});

事件和场地的发布和许可文件相同,控制器被路由到正确的页面,场地集合在其他控制器的页面上可见。

感谢您的宝贵时间!

您无法访问 Venue 合集的原因是您没有订阅它。 waitOn 函数中 return this.subscribe('events'); 之后的两个语句是死代码,因为 return 语句终止了一个函数。因此,您需要 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 应用程序因部署过程中的缩小过程而出现意外操作。