2016-11-09 81 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 
}); 

這裏的邏輯是,用戶可以在給定根標籤輸入多個子標籤。爲了保存子標籤和根標籤,我使用標籤服務的保存方法。從標籤服務的保存方法如下

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(); 
     }); 
    }); 
    } 
}); 

現在,這裏的問題是,當我說了根標籤5子標籤,那麼關係越來越堅持只爲最後的標籤,即第五個標籤。

我已經創建了五個標籤說onetwothree,爲root父標籤fourfive。然後,當從標記服務調用保存方法時,理想情況下,以下數據應該發送到服務器。

{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"}}}}} 

而是以下信息將要在屬於關聯信息只正在爲最後的標籤發送的服務器

{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

您的模型是'tag'類型還是'userfield'類型?它似乎改變了模型定義和樣本數據 – Beno

+0

@Beno謝謝,指出,糾正了問題 – Sumit

+0

您的回購沒有完全相同的內容 – 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

從頁面:

當你要定義一個自反關係(自我關係具有 關係的模型),則必須明確定義關係逆 。如果沒有反向關係,則可以將 inverse設置爲null。