2016-11-09 2 views
0

노드 서버로 데이터를 보내고 보내는 데 Ember의 Ember 2.4.6 및 JSONApiAdapter를 사용하고 있습니다.Ember가 belongsTo 데이터를 유지하지 않음

나는 다음과 같은 태그 모델을 가지고 :

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    label: DS.attr('string'), 
    isRoot: DS.attr('boolean', {defaultValue: false'}), 
    parent: DS.belongsTo('tag') //belongs to self type 
}); 

여기 논리는 사용자가 특정 루트 태그에 대해 여러 하위 태그를 입력 할 수 있습니다. 하위 태그와 루트 태그를 저장하려면 태그 서비스에서 save 메소드를 사용하고 있습니다. 태그 서비스에서 저장 방법은 여기에서 지금 문제가 내가 루트 태그에 대한 다섯 개 가지 하위 태그를 말할 때, 그 관계는 즉 다섯 번째 태그 마지막 태그 지속지고 있다는 점이다

import Ember from 'ember'; 

export default Ember.Service.extend({ 

    //Some other code 

    save: function(parent, children){ 
    return parent.save().then(response => { 
     return children.map(tag => { 
     tag.set('parent', response); 
     return tag.save(); 
     }); 
    }); 
    } 
}); 

다음과 같다.

내가 만든 다섯 개 태그는 root 부모 태그 one, two, three, fourfive을 말한다. 그런 다음 save 메소드가 태그 서비스에서 호출되면 이상적으로 다음 데이터가 서버로 전송되어야합니다.

{data: {id: 1, type: 'tags', attributes: {label: "root", "is-root": true}, relationships: {parent: {data: null}}}} 
{data: {id: 2, type: 'tags', attributes: {label: "one", "is-root": false}, relationships: {parent: {data: {id: 1, type: "tags"}}}}} 
{data: {id: 3, type: 'tags', attributes: {label: "two", "is-root": false}, relationships: {parent: {data: {id: 1, type: "tags"}}}}} 
{data: {id: 4, type: 'tags', attributes: {label: "three", "is-root": false}, relationships: {parent: {data: {id: 1, type: "tags"}}}}} 
{data: {id: 5, type: 'tags', attributes: {label: "four", "is-root": false}, relationships: {parent: {data: {id: 1, type: "tags"}}}}} 
{data: {id: 6, type: 'tags', attributes: {label: "five", "is-root": false}, relationships: {parent: {data: {id: 1, type: "tags"}}}}} 

하지만

대신 다음과 같은 정보는 belongsTo를 정보가 마지막 태그에 전송되는 서버

{data: {id: 1, type: 'tags', attributes: {label: "root", "is-root": true}, relationships: {parent: {data: null}}}} 
{data: {id: 2, type: 'tags', attributes: {label: "one", "is-root": false}, relationships: {parent: {data: null}}}} 
{data: {id: 3, type: 'tags', attributes: {label: "two", "is-root": false}, relationships: {parent: {data: null}}}} 
{data: {id: 4, type: 'tags', attributes: {label: "three", "is-root": false}, relationships: {parent: {data: null}}}} 
{data: {id: 5, type: 'tags', attributes: {label: "four", "is-root": false}, relationships: {parent: {data: null}}}} 
{data: {id: 6, type: 'tags', attributes: {label: "five", "is-root": false}, relationships: {parent: {data: {id: 1, type: "tags"}}}}} 

에 가고, 다른 모든 태그, 부모 데이터가 누락지고 있습니다.

왜 이런 일이 발생하는지 정확히 알 수 없습니다. 제가 여기서 잘못하고있는 것을 제안하십시오. 태그 모델에서

+0

모델이'태그'유형 또는'userfield' 유형입니까? 모델 정의와 샘플 데이터 사이에서 바뀌는 것 같습니다. – Beno

+0

@Beno는 지적했기 때문에, 질문을 수정했습니다. – Sumit

+0

Repo에 내용이 동일하지 않습니다. – JonRed

답변

0

,이 시도 :

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    label: DS.attr('string'), 
    isRoot: DS.attr('boolean', {defaultValue: false}), 
    parent: DS.belongsTo('tag', {inverse: null}) 
}); 
현재 재귀 관계에 대한 자세한 정보를 얻을 수 있습니다

: 페이지에서 https://guides.emberjs.com/v2.9.0/models/relationships/#toc_reflexive-relations

을 : 당신이를 정의 할

반사적 관계 (자신과의 관계가 인 모델)는 역함수 의 관계를 명시 적으로 정의해야합니다. 반비례 관계가 없으면 을 역으로 null로 설정할 수 있습니다.