2017-04-24 29 views
0

我是Embebr js的新手,並使用ember-data-factory插件來模擬ajax響應,但無法在響應下模擬。對象模擬使用數據工廠傢伙插件

{ 
     "employee/profile": { 
     "id": 60799, 
     "gender": "Male", 
     "fname": "Mick", 
     "lname": "Hussey", 
     "addresses": [ 
      "50345"  
     ] 
     }, 
     "employee/addresses": [ 
     { 
      "id": "50345", 
      "addressState": "GA", 
      "zip": "30004" 
     }  
     ] 

    } 

爲了達到這個目的,我在tests/factories /目錄下創建了profile和address模型。 員工/型材型號

import FactoryGuy from 'ember-data-factory-guy'; 

FactoryGuy.define('employee/profile', { 
    default: {  
    id: 60799, 
    gender: 'Male', 
    fname: 'Mick', 
    lname: 'Hussey', 
    addresses: FactoryGuy.hasMany('employee/address') 
    } 
}); 

地址型號:

import FactoryGuy from 'ember-data-factory-guy'; 

FactoryGuy.define('employee/address', { 
    default: { 
    id: '50345', 
    addressState: 'GA', 
    zip: '300014' 
    employee: FactoryGuy.belongsTo('employee/profile'), 

    } 
}); 

,當我嘗試使用下面的代碼片段建立配置文件對象,結果收到填寫的地址以外的所有字段。

let profile = this.build('employee/profile'); 

任何人都可以請幫助我瞭解什麼是錯的。

感謝 高塔姆

+0

是一個錯字,你有'員工/地址'和'員工/地址'。可能是導致問題 –

+0

對不起,這是在起草question.corrected – Gautam

+0

我沒有使用上面的插件。雖然我知道,爲了讓hasMany屬性得到填充,它應該已經有關係數據。所以,當你做'讓profile = this.build('customer/profile');'它是否會用'employee/address'填充商店?或者可能需要獨立完成。 –

回答

1

您需要定義如下關係:

addresses: FactoryGuy.hasMany('employee/address', 1) 

這種方式表明您想要的地址與它只是一個項目的數組。如果你省略了最後一個,你將最終得到一個空的地址列表。請在github中查看hasMany的源代碼。

順便說一句,我已經準備好你twiddle萬一你需要它。我不是專家;但我盡力了。您可以在unit/models/emoloyee/profile-test.js下查看profile型號的工廠定義和單元測試。希望這可以幫助。

+0

感謝您的幫助,標記爲Answer.In除了你的變化,我不得不刪除員工:FactoryGuy.belongsTo('員工/配置文件')從地址模型。 – Gautam