2017-12-12 19 views
0

로그인 한 사용자가 "저장된 항목"목록에 제품을 추가 할 수있는 기능을 코딩하려고합니다. 이 모델은 다음과 같습니다ember-data : hasMany 관계로 레코드로드

저장된 항목이 표시됩니다 saveditems 경로에
//saveditem.js model 
export default DS.Model.extend({ 
    user: belongsTo('user'), 
    product: belongsTo('product', { async: true }), 
    dateAdded: attr('string') 
}); 

model() 후크입니다

API가 바로 ID를 가진 레코드를 반환
model() { 
    return this.get("store").findAll('saveditem'); 
} 

:

{ 
    "dateAdded": "Mon, 11 Dec 2017 20:59:10 GMT", 
    "id": 4458, 
    "product": 4458, 
    "user": "me" 
}, 
{ 
    "dateAdded": "Sun, 10 Dec 2017 10:26:02 GMT", 
    "id": 3657, 
    "product": 3657, 
    "user": "me" 
} 
... 

ID를 사용하여 실제 제품을로드하기 위해 hasMany 관계를 얻으려면 어떻게해야합니까?

+0

실제로 당신을 위해 작동하지 않는 그 무엇인가

{{#each model as |result|}} <div> {{result.product.productName}} </div> {{/each}} 

또한 모델에 async: true을 설정하는 데 필요한? 어디서나 제품 속성에 액세스하고 API 호출이 표시되지 않습니까? 아니면 절대적으로, 제품이 필요하기 전에 saveditems를로드하고 싶을 것입니다 ('async : false'를 시도 했습니까?)? –

+0

응답 해 주셔서 감사합니다. 귀하의 질문은 아래의 대답을 게시하는 데 도움이되었습니다. – tarponjargon

답변

0

나는 그것을 알아 냈다. (arne.b의 질문에 의해 물었다.) 셋업은 정확했지만 아이템을 부르는 방식은 그렇지 않았습니다.

내가 템플릿에이 일을했다 : 내 saveditem 기록을 통해 반복,하지만 나는 제품 개체 자체를 호출되지 않았기 때문에 관계가 해결되지 않았기 때문에 비어있는 div 인쇄

{{#each model as |result|}} 
    <div> 
    {{result.productName}} 
    </div> 
{{/each}} 

. 올바른 방법은 :

export default DS.Model.extend({ 

    user: belongsTo('user'), 
    product: belongsTo('product', { async: true }), 
    dateAdded: attr('string') 

});