2013-12-19 33 views
0

我有一個對象「居住」和住宅有很多細節。當從服務器返回數據時,如何使用序列化程序「extractSingle」來映射其關係?我有以下,我得到錯誤「無法獲取屬性'toString的未定義或空引用」。有人能告訴我我在這裏做錯了嗎?燼數據提取單個串行器

App.Residence = DS.Model.extend({ 
residence_ID: attr('number'), 
house_Number: attr('string'), 
street: attr('string'), 
city_ID: attr('number'), 
state_ID: attr('number'), 
zip: attr('string'), 
apt: attr('string'), 
client_ID: attr('number'), 
client: null, 
lead: null, 
projectDetails: DS.hasMany('projectDetail') 
}); 


App.ResidenceSerializer = DS.WebAPISerializer.extend({ 
primaryKey: 'residence_ID', 

extractSingle: function (store, primaryType, payload) { 
    var primaryTypeName = primaryType.typeKey; 

    var typeName = primaryTypeName, 
     type = store.modelFor(typeName); 

    var data = {}; 
    data[typeName] = payload; 
    data.projectDetails = []; 

    var normalizedArray = payload.projectDetails.map(function (nav) { 
     data.projectDetails.push(nav); 
    }, this); 
    payload.projectDetails = payload.projectDetails.mapProperty('projectDetailID'); 

    payload = data; 
    return this._super.apply(this, arguments); 
}, 

normalizeHash: { 
    projectDetails: function (hash) { 
     hash.residence_ID = hash.id; 
     hash.id = hash.projectDetailID; 
     return hash; 
    }, 
    residence: function (hash) { 
     hash.residence_ID = hash.id; 
     return hash; 
    } 
} 

}); 

這裏是JSON從服務器返回

{ 
    "residence_ID":3532, 
    "house_Number":"243", 
    "street":"Main St.", 
    "city_ID":2, 
    "state_ID":33, 
    "zip":"11111", 
    "apt":"35", 
    "client_ID":3598, 
    "projectDetails":[{"projectDetailID":4947,"residence_ID":3532"}, {"projectDetailID":4947,"residence_ID":3532}] 
    } 
+0

你能告訴你的JSON是如何下來沒有更新? – Kingpin2k

+0

我剛發佈了json。不知道爲什麼我不能把它放在代碼部分 –

回答

1
return this._super.apply(this, arguments); 

你扔掉所有工作在結束並返回超級實現。你可以只是return data;

作爲一個方面說明在arguments參考,當你設置payload = data;

+0

我做了你的建議,但仍然得到相同的錯誤。我強制執行代碼並將其放入單獨的文件DS.WebAPISerializer = DS.RESTSerializer.extend,這不會給我錯誤並返回正確的記錄數。我真的不明白爲什麼,這個文件是由ember模板創建的,並且是所有確切單一模型的通用模型,爲了測試,我添加了代碼來爲這個特定模型創建子代。然而,我似乎無法通過做得到價值。() –