计算ember.js中的嵌套关​​联对象

时间:2013-04-29 20:50:15

标签: ember.js ember-data

我正在尝试在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')
});

我可以很好地进行讨论,但我无法找到与每次会议相关的讨论相关评论的方法。有什么想法最好这样做吗?

1 个答案:

答案 0 :(得分:1)

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

性能问题确实存在风险。

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

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