2017-04-21 1 views
0

related question에서 ember.js에서 일대 다 관계로 자식 객체에 부모 객체를 추가하는 방법을 알고 싶었습니다. 이제 새로 생성 된 자식을 사용하여 부모를 만들거나 업데이트 할 때이를 서버에 동시에 저장하는 방법을 알고 싶습니다.ember js에 중첩 된 객체를 저장하는 방법

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child: { 
     prop1: val1 
     prop2: val2 
    } 
} 

하지만 엠버의 페이로드는 다음과 같습니다 : 부모에 추가 이미 존재하는 아이를 가진 경우

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:null 
} 

같은 업데이트를 진행

서버는 다음과 같이 기대. 그리고 페이로드는 다음과 같은 :

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:2 
} 

그래서는 페이로드로 전송 된 아동 대상은 아니지만 기존의 경우에만이 ID입니다 (그렇지 않은 경우는 null)). 서버와 같은 중첩 된 객체를 보낼 수 있습니까? 아니면 두 개의 Ajax-post/put-request를 사용하여 두 모델을 따로 저장해야합니까?

답변

1

서버가 왜 그렇게 기대하고 있는지 모르겠지만 이와 같이 얻을 수 있습니다.

당신의 상위 모델에 먼저 다음 아이에게

this.store.createRecord('parent',{ 
     child: this.store.createRecord('child',{name: "John"}) 
    }); 

을 만들 경우

child: DS.attr("") //this will give you ability to send any type in your case object to property child. 

을 넣어 또는이

let parent = this.store.findRecord("parent", 1); 
let child = this.store.createRecord('child',{name: "John"}); 
parent.set("child", child); 

같은이 있으면 개인적으로 나는 그것을 피할 것이지만, 당신은 js에서 원하는 것을 무엇이든 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. REST 서버는 PHP/zend/apigility로 개발되었으며, REST HAL 스펙을 그대로 따르며 표시된 형식은 데이터를 서버로 푸시하는 방법입니다. 한 요청으로 관련 레코드를 푸시하고 동일한 왕복 시간 내에 서버에서 처리하도록하는 것이 절대적으로 중요하다고 생각합니다. 제 경우에는 회사 데이터와 주소 데이터가있는 양식이 있습니다. 이것은 하나의 형식이지만 두 개의 관련 엔티티입니다. 내가 함께 게시 할 수 없다면 두 편의 아약스 전화가 필요하다고 생각한다. 어떤 제안이라도 환영합니다. – Mannimalte

+0

RoR Ember 개발자로서 내가 해왔 던 바로 그 것입니다. 그러나 만약 당신이 이걸 필요로하고 당신의 서버가 기대하는 것이 있다면, 당신이 twiddle pls을 필요로한다면 이것을 사용하십시오. –

관련 문제