session.user
에 세션에로드 된 사용자 개체가 있습니다. 사용자에게 많은 역할을 할당 할 수 있습니다. 다음은 모델에서 보이는 모습입니다.어떻게 hasMany 관계를 필터링 할 수 있습니까?
App.User = DS.Model.extend({
roles : DS.hasMany('role'),
...
}
역할이 포함 된 레코드로 사용자에게로드됩니다. 사용자가 ember-data store에 성공적으로로드되고 사용자와 역할 간의 관계가 모두 양호 함을 확인할 수 있습니다.
내가 할 수 있기를 원하는 것은 역할 속성에 따라 사용자의 역할 중 하나를 얻는 것입니다. 나는 시도했다
this.get('session.user.roles').then(function (roles) {
return roles.filterBy('propertyName', 'propertyValue');
});
그러나 나는 get 메소드가 store.find() 메소드와 같은 약속을 리턴한다고 생각하지 않는다. 역할을 필터링하기 위해 어떤 방법이 제공됩니까?
오! 이것은 귀하의 프레 젠 테이션입니다. 근본적인. 사용자 이름에 얼굴을 표시하는 것이 좋습니다. 나는 이것을 확실히 볼 것이다. 것은 역할이 비동기 관계가 아니라는 것입니다. 그것들은'DS.hasMany ('role')'로 정의되어 있으며'DS.EmbeddedRecordsMixin'을 사용하여 임베디드를 직렬화합니다. 내가'this.get ('session.user.roles')'을했을 때, 나는 약속을 되찾지 못했지만, 역할 배열 객체라고 생각한다. – ToddSmithSalter
'this.get ('session.user.roles')'를 실행하면 DS.ManyArray 객체가 반환되는 것을 확인할 수 있습니다. DS.ManyArray는 Ember.ArrayProxy를 확장하는 DS.RecordsArray를 확장합니다. 필터 메소드에 액세스 할 수 없습니까? 대신, 나는 항상'Uncaught TypeError : undefined'의 'filter'속성을 읽을 수 없습니다. – ToddSmithSalter
해당 링크를 제공해 주셔서 감사합니다. 나는 약속의 4 층 케이크로 역할을 얻고 걸러 낼 수 있었다. 지금 내가 겪고있는 문제는 메소드의 약속 값을 반환하는 것입니다. 범위 변수에 설정하려고 시도했지만 막대기처럼 보이지 않습니다. – ToddSmithSalter