Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬数据-递归关系_Ember.js_Ember Data_Qunit_Ember App Kit - Fatal编程技术网

Ember.js 余烬数据-递归关系

Ember.js 余烬数据-递归关系,ember.js,ember-data,qunit,ember-app-kit,Ember.js,Ember Data,Qunit,Ember App Kit,我正在使用带有余烬数据的余烬应用程序工具包。我使用余烬数据创建了以下两个模型。节点具有递归关系,标记具有对节点的引用 Node = DS.Model.extend({ name: DS.attr('string'), createdAt: DS.attr('date'), tags: DS.hasMany('tag', {async: true}), children: DS.hasMany('node', {async: true, inverse: 'parent'}),

我正在使用带有余烬数据的余烬应用程序工具包。我使用余烬数据创建了以下两个模型。节点具有递归关系,标记具有对节点的引用

Node = DS.Model.extend({
  name: DS.attr('string'),
  createdAt: DS.attr('date'),
  tags: DS.hasMany('tag', {async: true}),
  children: DS.hasMany('node', {async: true, inverse: 'parent'}),
  parent: DS.belongsTo('node', {async: true, inverse: 'children'})
});

Tag = DS.Model.extend({
  name: DS.attr('string'),
  parent: DS.belongsTo('node', {async: true})
});
每当我尝试将一个标记重新分配给另一个父项时,更改不会持续

NodeController = Ember.Controller.extend({
    actions: {
        update: function(newParentNode) {
           var node = model;
           node.set('parent', newParentNode);
           node.save().then(function(updatedNode){
              updatedNode.get('parent');// returns null
           }); //doesn't work
        }
    }
});
我发现了一个标记,但区别在于标记也与节点有关系。是否可以仅通过更新子级来更新父子关系

更新#1:

在控制台中检查ember数据的输出时,我注意到save上没有任何关于父子关系的信息。发送到后端的请求有效负载如下所示:

{ "node":  { "name": "node4", "createdAt": null } }
{"tag": {"name":"tag123", "parent":"66c8ec8c-3790-45b2-8669-e9581102376d"} }
不会传输有关父/子关系的任何信息。但是,如果我将标签重新分配给其他节点,后端会收到以下信息:

{ "node":  { "name": "node4", "createdAt": null } }
{"tag": {"name":"tag123", "parent":"66c8ec8c-3790-45b2-8669-e9581102376d"} }
我试着通过去掉倒数来简化节点模型。这允许我重新分配家长,但余烬数据开始发送请求上的子女关系,作为更新关系的手段

{ "node":  { 
             "name": "node4", 
             "createdAt": null, 
             "children": ["66c8ec8c-3790-45b2-8669-e9581102376d"] 
           } 
}
虽然这项工作已经完成,但并不理想。因为可能会有很多子节点,发送每个子节点的ID将导致请求负载膨胀。余烬数据是否无法使用其新的父关系密钥发送子项的更新信息?此更改还导致在Qunit中开始引发错误消息

您在(DS.Model的子类)上定义了“父”关系,但在(DS.Model的子类)上发现了多个类型可能的反向关系(DS.Model的子类)