2016-11-08 56 views
0

我在建立這種關係時遇到了一些困難。有人可以幫忙嗎?Ember CLI Mirage:2級側載響應

租客一個App

的App有品牌

大疑難雜症是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" 
    } 
    ] 
} 

我已經把我的模式爲:

// 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/serializers/app.js 
export default ApplicationSerializer.extend({ 
    include: ['brand'] 
}); 

// mirage/serializers/tenant.js 
export default ApplicationSerializer.extend({ 
    include: ['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 
    } 
    ] 
}