Javascript 余烬数据提取单个序列化程序

Javascript 余烬数据提取单个序列化程序,javascript,json,ember.js,ember-data,serialization,Javascript,Json,Ember.js,Ember Data,Serialization,我有一个对象“住宅”,住宅有很多细节。从服务器返回数据时,如何使用序列化程序“extractSingle”映射其关系?我有以下错误,我得到错误“无法获取未定义或空引用的属性'toString'。有人能告诉我我做错了什么吗 App.Residence = DS.Model.extend({ residence_ID: attr('number'), house_Number: attr('string'), street: attr('string'), city_ID: attr('number

我有一个对象“住宅”,住宅有很多细节。从服务器返回数据时,如何使用序列化程序“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}]
   }
您在最后放弃了所有的工作,并返回了超级实现。您可以
返回数据


作为旁注,
arguments
中的引用在设置
payload=data时不会得到更新

你能展示一下你的json是如何下降的吗?我刚刚发布了json。我不知道为什么我不能把它放在代码部分。我按照你的建议做了,但仍然得到同样的错误。我提取了代码并将其放在一个单独的文件DS.WebAPISerializer=DS.RESTSerializer.extend中,这不会给我错误并返回正确的记录数。我真的不明白为什么,这个文件是由ember模板创建的,并且是所有精确的单一模型的通用文件,为了测试,我添加了代码来为这个特定模型生成子模型。然而,我似乎无法通过执行get来获得价值
return this._super.apply(this, arguments);