2016-11-08 4 views
0

이 관계를 모델링하는 데 어려움이 있습니다. 누군가 제발 도와 줄 수 있니?Ember CLI Mirage : 2 레벨 사이드로드 된 응답

세입자 앱

앱 브랜드

큰 잡았다 측면로드 2 레벨이다 있음. 다음과 같이 나의 현재 API는 응답을 반환 :

{ 
    "tenants": [ 
     { 
     "app_id": "app_001", 
     "id": 1, 
     "name": "Illya_no_delete", 
     } 
    ], 
    "app": [ 
    { 
     "brand_id": "brand_001", 
     "id": "app_001", 
     "name": "updated test client 2 name", 
    } 
    ], 
    "brands": [ 
    { 
     "id": "brand_001", 
     "app_id": "app_001" 
    } 
    ] 
} 

모델로 설정 한 :

// mirage/serializers/app.js 
export default ApplicationSerializer.extend({ 
    include: ['brand'] 
}); 

// mirage/serializers/tenant.js 
export default ApplicationSerializer.extend({ 
    include: ['app'] 
}); 

:

// models/tenant.js 
export default Model.extend({ 
    app: belongsTo('app'), 
}); 


// mirage/models/app.js 
export default Model.extend({ 
    brand: belongsTo('brand'), 
    tenant: belongsTo('tenant') 
}); 

// mirage/models/brand.js 
export default Model.extend({ 
    app: belongsTo('app') 
}); 

나는 나의 시리얼을을 설정 한 내 시나리오를으로 설정했습니다 :

// mirage/scenarios/default.js 
let brand = server.create('brand'); 
let app = server.create('app', {brand: brand}); 
server.createList('tenant', 10, {app: app}); 

불행히도 내 생성 된 응답은 측면로드 된 브랜드 객체를 반환하지 않습니다.

{ 
    tenant: { 
    id: 1, 
    app_id: 2 
    }, 
    apps: [ 
    { 
     id: 2, 
     brand_id: null, 
     tenant_id: 1 
    } 
    ] 
} 

어떤 제안 내가 '브랜드'를 표시 얻기 위해 무엇을해야하는지에 : 나는 모든 내 다른 개체를 볼?

+1

(HTTP ://www.ember-cli-mirage.com/docs/v0.2.x/serializers/#serializeresponse-request) 최종 수정을 수행합니다. 'belongsTo'는 다른 쪽이'hasMany'라고 가정합니다. –

+0

@SamSelikoff! 감사합니다. 정말 그 대답을 주셔서 감사합니다. 나는 해결책이 있다고 생각한다. 여기 게시 할 예정입니다. – unicornherder

답변

0

관심있는 사람에게 Sam Selikoff의 의견을 기반으로 저에게 도움이되는 해결책이 있습니다. 의견을 열기 :

모델 :

// models/tenant.js 
export default Model.extend({ 
    app: belongsTo('app'), 
    brand: belongsTo('brand'), 
}); 

// mirage/models/app.js 
export default Model.extend({ 
    tenant: belongsTo('tenant') 
}); 

// mirage/models/brand.js 
export default Model.extend({ 

}); 

직렬 변환기 :

// mirage/serializers/tenant.js 
export default ApplicationSerializer.extend({ 
    include: ['app', 'brand'], 

    serialize() { 
    let json = ApplicationSerializer.prototype.serialize.apply(this, arguments); 
    if (json.brands.length > 0) { 
     let brandId = json.brands[0].id; 
     json.applications[0].brand_id = brandId; 
    } 
    return json; 
    } 
}); 

기본 시나리오 :

// mirage/scenarios/default.js 
let brand = server.create('brand'); 
let app = server.create('app'); 
server.createList('tenant', 10, {app: app, brand: brand}); 

응답 :

{ 
    tenant: { 
    id: 1, 
    app_id: 2 
    }, 
    apps: [ 
    { 
     id: 2, 
     brand_id: 3, 
     tenant_id: 1 
    } 
    ], 
    brand: [ 
    { 
     id: 3 
    } 
    ] 
} 
나는 관계의 한쪽면을 제거하고이 [후크를 직렬화] 사용하는 것이 좋습니다 것이 지금은 관계가 현재 제대로, (이 작품에서의)는 지원되지 않습니다 일대일