2013-12-19 2 views
0

개체가 "거주지"이고 거주지에 많은 세부 정보가 있습니다. 데이터가 서버에서 반환되면 serializer "extractSingle"을 사용하여 관계를 매핑하는 방법은 무엇입니까? 다음과 같은 오류가 발생합니다 "정의되지 않은 또는 null 참조"toString '속성을 가져올 수 없습니다. " 누군가 내가 여기서 잘못하고있는 것을 말해 줄 수 있습니까? 여기ember 데이터 추출기 단일 시리얼 화기

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 내려 오는 방법을 보여 수를 설정할 때 arguments의 참조가 업데이트되지 않습니다 보조 노트로

? – Kingpin2k

+0

방금 ​​json을 게시했습니다. 왜 코드 섹션에 넣을 수 없는지 모르겠다. –

답변

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

을 반환합니다. 너는 단지 return data; 일 수있다. 당신이 payload = data;

+0

나는 당신이 제안한 것을했지만 여전히 같은 오류가 발생한다. 나는 코드를 작성하여 별도의 파일에 저장했다. DS.WebAPISerializer = DS.RESTSerializer.extend 그리고 이것은 오류를주지 않고 올바른 수의 레코드를 리턴한다. 나는 왜이 파일이 ember 템플릿에 의해 만들어 졌는지, 모든 단일 모델에 대한 일반적인 것인지를 이해하지 못한다. 테스트를 위해이 특정 모델을위한 코드를 추가했다. 그러나 나는 get을함으로써 가치를 얻는 것처럼 보이지 않습니다.() –