2014-07-10 5 views
0

Ember DS.Store에는 사용자 및 위치라는 두 가지 유형의 레코드가 있습니다. (사실 나는 더 많은 것을 가지고 있지만, 단순함을 위해). 이제 Ember.js에서 두 가지 이상의 유형의 레코드를 모두 찾는 방법은 무엇입니까?

는 단순히

this.store.find('user') 

할 것, '사용자', 말의 모든 항목을 얻을 지금은 변수 allResults가 있다고 나는이 명령에 할당합니다.

allResults = this.store.find('user') 

이 엠버는 promiseArray 호출, 나는 기록의 한 유형을 필요로 할 때 나는 단순히

allResults.then(successfunction(), failurefunction()) 

지금이 좋은 작품이 약속 배열로드 후 아무것도 할 걸 제공 - 내가 필요하다고 사용자 만이 성공 함수()를 첫 번째 인수로 쉽게 호출 할 수 있습니다.

그러나 내 필요성은 다음과 같습니다. 기본적으로 이러한 레코드를 검색하는 검색 창을 구축하기 때문에 누군가 "mary"를 입력하면 "Mary"사용자와 "mary Ave"사용자를 모두 표시해야합니다. . 예를 들어) 그래서

나는 따라서

this.store.find('user') 

&

this.store.find('location') 

의 결합 된 결과를 필요로, 여기 내 질문은 : [나는 t을 느낄 모자 둘 중 하나는

  1. 내가 모두 '사용자'와 '위치'에 관한 모든 데이터를 가져올 수있는 방법이 있나요]. 일 것이고, 그것은 하나의 영광 promiseArray로 돌아왔다? 이것은 또한이 이슈에 접근하는 최선의 방법으로 보입니다.

  2. 두 개의 promiseArrays를 연결하여 하나를 더 크게 만들 수 있으며, 더 큰 하나의 .then 함수를 사용할 수 있습니까? 그렇다면 어떻게?

답변

1

약속을 결합 할 수 있습니다. 이 같은

http://emberjs.com/api/classes/Ember.RSVP.Promise.html

무언가가 당신을 위해 작동합니다 :

var bothPromise = Promise.all([ 
    store.find('user'), 
    store.find('location') 
]).then(function(values){ 
    //merge the values arrays 
    var all = Em.A(); 
    all.addObjects(values[0]); //users 
    all.addObjects(values[1]); //locations 
    return all; 
}); 

bothPromise.then(function(allObjects){... 

이 약속 라이브러리에서 "결합"절을 참조하십시오 약속을 결합의 또 다른 설명은 Q했다.

관련 문제