我正在尝试在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')
});
我可以很好地进行讨论,但我无法找到与每次会议相关的讨论相关评论的方法。有什么想法最好这样做吗?
答案 0 :(得分:1)
我不知道您有多少讨论和评论,但这是n + 1选择问题的典型问题(请参阅What is SELECT N+1?)。
性能问题确实存在风险。
如果您认为这不是问题,可以在itemController
上创建一个过滤器,以获取与会议相关的所有注释,然后使用此数组计算总数。
否则,您可以在讨论服务器端缓存注释数量,并将此计数器添加到App.Discussion
模型。