1

我正在尝试在我的 ember 控制器中返回关联对象的计数。

我有:

App.Comment = DS.Model.extend({
    discussion: DS.belongsTo('App.Discussion')
});

App.Discussion = DS.Model.extend({
    meeting: DS.belongsTo('App.Meeting'),
    comments: DS.hasMany('App.Comment')
});

App.Meeting = DS.Model.extend({
    discussions: DS.hasMany('App.Discussion')
});

现在在我的会议控制器中,我想返回与该会议相关的讨论和评论的计数:

App.MeetingController = Ember.ObjectController.extend({
    discussionCount: function(){
        return this.get('discussions.length');
    }.property('discussions')
});

我可以很好地进行讨论,但我无法找到一种方法来获取与每个会议相关的讨论的相关评论。任何想法如何最好地做到这一点?

4

1 回答 1

1

我不知道您有多少讨论和评论,但这是典型的 n+1 选择问题(请参阅什么是 SELECT N+1?)。

性能问题存在真正的风险。

如果您认为这不是问题,您可以在 上创建一个过滤器itemController以获取与会议关联的所有评论,然后使用此数组来计算总数。

否则,您可以在讨论服务器端缓存评论数量并将此计数器添加到App.Discussion模型中。

于 2013-04-30T01:56:48.950 回答