2017-10-17 6 views
1

현재 EmberJS로 작성된 App 용 테스트를 작성하고 있습니다. 나는 신기루를 사용하고있다. 내가 만드는거야Ember Mirage와 관계를 가져올 수 없습니다.

신기루/모델/paperwork.js

export default Model.extend({ 
customer: belongsTo('customer'), 
paperwork_products: hasMany('paperwork-product', { inverse: 'paperwork' }), 

신기루/모델/서류 - product.js 내 시나리오에서

export default Model.extend({ 
paperwork: belongsTo('paperwork', { inverse: 'paperwork_products' }), 
}); 

: 나는 다음과 같은 두 가지 모델을 가지고 이처럼 내 datas :

const paperwork = server.create('paperwork');                     
const paperworkProduct = server.create('paperwork-product', { paperwork });      
paperwork.paperwork_products.add(paperworkProduct); 

내 경로 :

export default ApplicationRoute.extend({ 
    model(params) { 
     return this.store.findRecord('paperwork', params.paperwork_id, { include: 'paperwork_products' }),   
    }, 
}); 

문제는 내 템플릿에서 서류 작업. 서류 작업 제품에 액세스 할 수 없다는 것입니다. 그것은 정의되지 않았습니다 (다른 서류 작업의 속성은 여기에 있지만 관계는 아닙니다). 경로가 선언 될 때 이미 mirage/config.js에 디버거를 넣으려고했습니다. 내 서류가 존재하고, 그의 "서류 작업 제품들"도 있습니다. 하지만 템플릿에 서류 작업 제품 데이터를 가져올 수 없습니다. 내가 뭘 잘못하고 있니? 나는 내에서 뭔가를 변경해야합니다 생각 :

this.get('v1/paperworks/:id'); 

그러나 나는 무엇을 모른다 ... 사전에 감사!

편집 :

모델/

export default DS.Model.extend({ 
    customer: DS.belongsTo('customer'), 
    paperwork_products: DS.hasMany('paperwork-product', { async: true }), 
}); 

모델/서류 - product.js는

export default DS.Model.extend({ 
    paperwork: DS.belongsTo('paperwork'), 
}); 

어제 내가 진짜를 비교하기 위해 노력 paperwork.js : 여기 내 진짜 엠버 모델은 JsonApi의 응답과 미라지 응답을 비교해 보았습니다. 관계 해시에서 관계 "서류 작업 제품"이 서류 작업 제품 (미라지 포함)으로 변경되었습니다. 그래서 대시가있는 밑줄이나 모델과의 관계에 문제가 있습니다. config.js에서 JSONAPI 백엔드를 모의하려고했지만 잘 작동합니다.

"relationships":{ 
    "customer":{ 
     "data":{ 
      "type":"customers", 
      "id":"1" 
     } 
    }, 
    "paperwork-products":{ 
     "data":[ 
      { 
       "type":"paperwork-products", 
       "id":"1" 
      } 
     ] 
    } 
} 

가되어야한다 : hasMany의 관계와

"relationships":{ 
    "customer":{ 
     "data":{ 
      "type":"customers", 
      "id":"1" 
     } 
    }, 
    "paperwork_products":{ 
     "data":[ 
      { 
       "type":"paperwork_products", 
       "id":"1" 
      } 
     ] 
    } 
} 

내 다른 모델은 어떤 문제가 발생하지 않습니다 그냥 "paperwork_products"

미라지 응답으로 "서류-제품을"대체했다.

답변

0

확인하려면 Ember Data 모델을 동일한 관계로 설정 했습니까? 그것들이 없으면, 일들이 일어날 수 있습니다. 그것은 아주 잘 작동합니다 ...

만약 그렇다면, 당신도 그 모델을 게시 할 수 있습니까?

참고로, Mirage 0.3.0에는 자동 동기화 설정이 포함되어있어 Ember Data 모델을 읽고 작업 없이도 해당 Mirage 모델을 만들 수 있습니다. 사랑 스럽네요 ...

편집 : 나는 낙타의 관계를 사용하기 위해 Ember Data 모델을 재 작업하는 것이 좋습니다.다음 작업을 수행 할 경우

모델/엠버 데이터가 자동으로

합니까

키 적절한 JSON-API에 낙타 표기법 관계를 번역 나는, 그것은 문제없이 작동 기대

export default DS.Model.extend({ 
    customer: DS.belongsTo('customer'), 
    paperworkProducts: DS.hasMany('paperwork-product', { async: true }), 
}); 

paperwork.js 그게 너를 위해 일해?

+0

나는 내 메인 포스트를 편집했다. 나는 다른 세부 사항을 추가했다. 귀하의 답변에 감사드립니다. – Seybol