2016-09-21 3 views
1

. 내가엠버 데이터 믹스(), 쿼리(), 내가</p> <pre><code>this.get('store').findAll('model') </code></pre> <p>을 할 경우 그것은 <code>/models</code>에 요청을하고 그것이 <code>array</code>에 대한 기대 findall은()

this.get('store').find('model', my_id) 

을 한편,이 /models/my_id에 요청을하고 내 모델의 하나 개의 레코드에 대한 기대됩니다. 방법 .query()은 기본적으로 그것은 /models?something=foo에 요청을하게됩니다

this.get('store').query('model', {something: 'foo'}) 

처럼 내가 전달하는 매개 변수로 GET 요청을 할 것입니다.

나는 위의 모든 세 가지 방법을 혼합 무언가를 만들 수 있습니다 :

내 질문은 다음과 같다? /models/foo 경로를 요청하고 하나의 배열을 원합니다.

나는 .find('model', params.something)을했지만 그것은 하나 개의 어레이를 하나 개의 모델에 대한 기대와되지 않았 음을 말하는 어설 예외를 던졌다.

+0

에 적용되고 있지하여 예? 먼저 첫 번째 작업을 수행 한 다음 다시 정상 작업을 수행하는 것을 의미합니다. 또한 여러 레코드 및 this.get ('store')에 대한 쿼리를 선택 했습니까? queryRecord()? 약속이있는 – Majid

+0

백엔드에서 여러 쿼리를 수행합니다. 나는 것을 시도 – mk2

답변

2

난 당신이 RestAdapter를 사용하고 하나 개의 모델이 작업을 수행 할 수 있으리라 믿고있어. 어떤 경우에는 BuildURLMixin 클래스의 메서드를 수정하여 어댑터를 사용자 정의 할 수 있습니다.

urlForQuery(query, modelName) { 
    return '/models/foo'; 
}, 

편집 : 당신이 쿼리에 대한 URL로/모델/foo는 지정 싶어한다면 다음과 같은 사용자 정의 어댑터를 urlForQuery을 구현할 수있는 당신이 당신의 URL을 완벽하게 제어하려면 사용자 정의 할 수 buildUrl

buildURL(modelName, id, snapshot, requestType, query) { 
    switch (requestType) { 
    case 'query': 
     return '/models/' + query.something; 
    default: 
     return this._super(); 
    } 
}, 

은 다음 당신은 당신이 호출 할 때 :

this.get('store').find('model', {something: 'foo'}) 

이없는 쿼리 문자열로/모델/foo는 에 타격을 줄 것으로 예상된다.

EDIT2가 : 쿼리 문자열이 방법은 나중에 내가 생각했던 것보다 추가됩니다 밝혀졌습니다. 당신이 원하는 것을 할 수있는 사실 당신은 당신의 어댑터의 query 방법을 사용자 정의해야 할 것입니다. 당신이 RestAdapter에 대한 source 보면 당신은이 시점에서 쿼리를 추가합니다 볼 수 있습니다 그것은 URL 호출

return this.ajax(url, 'GET', { }); 

하지만 당신은해야합니다 :

return this.ajax(url, 'GET', { data: query }); 

그래서 당신은 단지 그것을 사용자 정의 할 수 있습니다 효과에 노크의 인식은 더의 QueryStrings는 당신이 약속을 시도하는 모든

+0

하지만 나는 싶지는 제안에 대한 ... 덕분에 그렇게하지 않지만, 내 경로로 놨어요 쿼리가 끝? 뭔가 = foo''게재 유지합니다. – mk2

+1

예. 전달할 쿼리 매개 변수를 추가합니다.솔직히 말해서 나는 당신이 여기에서 성취하려는 것을 따르지 않고 url을 완벽하게 제어하고 싶다면 buildUrl을 사용할 수있다. 나는 나의 대답을 업데이트했다. –

+0

이것은 거의 트릭을했다. 'this.get ('store '). query ('model ', {something :'foo '})'url은/models/foo가 되었습니까? something = foo가되었습니다. '.find()'를 사용하려고 시도했지만 find가 쿼리 객체를 받아들이지 않기 때문에'.query()'를 사용해야한다는 에러가 발생했습니다 ... – mk2