【问题标题】:meteor.js - set controller to access collectionmeteor.js - 设置控制器访问集合
【发布时间】:2015-12-06 03:58:12
【问题描述】:

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

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

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

感谢您的宝贵时间!

【问题讨论】:

    标签: javascript mongodb meteor meteor-publications meteor-collections


    【解决方案1】:

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

    【讨论】:

    • 非常感谢。我没有意识到这一点,我想订阅用户部分不是必需的,因为我已经可以访问当前用户。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多