2014-09-19 2 views
1

현재 Ember-cli를 사용하고 2 단어 및 관계가있는 모델에 약간의 어려움이있는 앱을 개발 중입니다.Ember cli - 여러 단어 및 관계 (ember-data)로 구성된 모델

모델 주민 프로파일

//models/residents-profile.js 
DS.Model.extend({ 
    firstName: DS.attr('string'), 
    lastName: DS.attr('string'), 
    picture: DS.attr('string'), 
    phone: DS.attr('string'), 
    gender: DS.attr('string'), 
    residentsAccount: DS.belongsTo('residentsAccount') 
} 

** 모델 주민-계정 **

//models/residents-account.js 
DS.Model.extend({ 
    email: DS.attr('string'), 
    password: DS.attr('string'), 
    profileId: DS.attr('number'), 
    residentsProfile: DS.belongsTo('residentsProfile', this.profileId), 
}); 

주민 노선에 모델 후크 :

//routes/residents.js 

    model: function() { 
      return Ember.RSVP.hash({ 
       residentsProfile: this.store.find('residentsProfile'), 
       residentsAccount: this.store.find('residentsAccount') 
      }) 
    } 

로 곧 내가 시도하고 fetc h 거주자 프로필에 오류가 발생합니다. "residents.index 'typeKey'속성을 읽을 수 없습니다.

거주자 프로필에서 관계 키를 제거하고 거주자 프로필 만 호출하면 데이터가 올바르게 반입됩니다. 나는 RESTAdapter하고 편안한 API를 사용하고

,

모델

별도로 반환되고 다음과 같이 서버의 응답은 다음과 같습니다

GET/residentsProfile { "residentsProfiles" [{ "ID"20 "사진"NULL, "전화"NULL, "firstName을" "록" "이 lastName": "발보아" "BLOCKID"NULL,"unitId": null, "createdAt": "2014-09-17 19:54:28", "updatedAt": "2014-09-17 19:54:28", "residentsAccount": [5 ] }] }

GET/residentsAccount { "residentsAccounts": [{ "ID": 5, "이메일": "[email protected]" "관리자"거짓 , "resident": true, "profileId": 20, "createdAt": "2014-09-17 19:54:29", "updatedAt": "2014- 09-17 19시 54분 29초 " "residentsProfile "에 스폿 하였다 @ Kingpin2k 의해 제안 된 변경 게다가 [20] }]}

EDIT

난 사용 setupcontroller를 다음과 같이 설정하십시오.

setupController: function(controller, 
     controller.set('residentsAccount', models.residentsAccount); 
     controller.set('residentsProfile', models.residentsProfile); 
    } 

이제 모든 것이 작동합니다.

답변

2

세 가지 문제, (그들은 같은 응답으로 반환되지 않으므로)의 관계 모두 비동기해야

residentsAccount: DS.belongsTo('residentsAccount', {async: true}) 

residentsProfile: DS.belongsTo('residentsProfile', {async:true}) 

그리고 그들로부터 JSON 응답의 모두는 하나의 ID가 아닌 배열이

{ 
    "residentsProfiles":[ 
    { 
    "id":20, 
    "picture":null, 
    "phone":null, 
    "firstName":"Rocky", 
    "lastName":"Balboa", 
    "blockId":null, 
    "unitId":null, 
    "createdAt":"2014-09-17 19:54:28", 
    "updatedAt":"2014-09-17 19:54:28", 
    "residentsAccount": 5 
    } 
    ] 
} 

마지막으로, 나는 당신이 여기 this.profileId으로 달성하려고하는지 잘 모르겠지만, 아마 당신이 생각하는 일을하지 않습니다. 그 범위에 this이 아마도 윈도우 일 것입니다.

+0

당신은 절대적으로 옳았습니다. 필자는 (필사적으로) 디버깅을 시도하면서 편집기에있는 내용을 붙여 넣었습니다. 그래서 그것은 분명히 실수였습니다. 나는 백엔드 녀석이 그것을 테스트하고 올바른 답을 표시하도록 API를 고치기를 기다리고 있습니다. 응답 해 주셔서 감사합니다. – bzlies