2013-04-29 3 views
1

내 ember 컨트롤러에서 관련 객체에 대한 개수를 반환하려고합니다.ember.js에서 중첩 된 연관 객체 계산하기

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

('discussion') }); –

+0

감사합니다. 예를 편집합니다. 중첩 된 연관성에 대한 도움이 필요하십니까? – i0n

+0

뭔가 테스트 ;-) –

답변

1

토론 및 의견 수를 알 수는 없지만 이는 n + 1 선택 문제의 일반적인 예입니다 (What is SELECT N+1? 참조).

성능 문제가 발생할 수 있습니다.

문제가 있다고 생각하지 않으면 itemController에 필터를 만들어 회의와 관련된 모든 의견을 얻은 다음이 배열을 사용하여 총 개수를 계산할 수 있습니다.

그렇지 않은 경우 토론 서버 쪽에서 댓글 수를 캐시하고이 카운터를 App.Discussion 모델에 추가 할 수 있습니다. } .property, 기능() { 반환 썩 ('discussions.length') : 당신이 당신의`ManyArray`을 변환 을 App.MeetingController = Ember.ObjectController.extend ({ discussionCount 필요가 없습니다