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 余烬数据1.0.x不保存时有很多关系_Ember.js_Ember Data - Fatal编程技术网

Ember.js 余烬数据1.0.x不保存时有很多关系

Ember.js 余烬数据1.0.x不保存时有很多关系,ember.js,ember-data,Ember.js,Ember Data,hasMany关系之一未发回服务器。你应该如何建立双向关系的模型 以下是相关对象: Encompass.Selection = DS.Model.extend({ text: DS.attr('string'), submission: DS.belongsTo('submission', {inverse: 'selections'}), }); Encompass.Submission = DS.Model.extend({ shortAnswer: DS.attr('stri

hasMany关系之一未发回服务器。你应该如何建立双向关系的模型

以下是相关对象:

Encompass.Selection = DS.Model.extend({
  text: DS.attr('string'),
  submission: DS.belongsTo('submission', {inverse: 'selections'}),
});

Encompass.Submission = DS.Model.extend({
  shortAnswer: DS.attr('string'),
  selections: DS.hasMany('selection'),
  testing: DS.hasMany('folder'),
  workspaces: DS.hasMany('workspace'),
});
和控制器动作:

testing2: function() {
  var submission = this.get('model');
  console.log(submission.get('selections.length'));
  var newSelection = this.get('store').createRecord('selection', {
    text: 'testing2 selection' + new Date().getMilliseconds(),
    submission: submission,
    coordinates: 'bogus coords',
    workspace: this.get('currentWorkspace')
  });
  //newSelection.save();
  console.log(submission.get('selections.length'));
  submission.save();
},
当我点击testing2操作时,控制台显示提交首先有一个选择,然后是第二个选择。
save()
方法触发post,但它缺少selections对象:

  {
    submission: {
      shortAnswer: "short", 
      testing:     [],
      workspaces:  ["5271d0147205f15e31000001"]
    }
  }
我尝试过删除和添加反向映射。奇怪的是,另一部分有很多关系


我发现唯一有效的方法是从
选择中删除
提交
字段

我也遇到了同样的问题。我试图删除DS.belongTo语句,但没有效果。我使用模型的“save”功能触发一条发送给服务器的消息。我想知道是否有另一种触发方式会导致向服务器发送不同的消息(使用hasMany记录)。

以下是hasMany未返回的情况之一

我们有时会看到save()操作序列化的json不包含我们刚才设置的数据,这确实令人费解

selection.set('workspace', workspace)
selection.save()
json可能看起来像:

{ 
 id: 02314892038,
 workspace: undefined,
 isTrashed: false
}
正在设置工作区,但不是现在。有一个设定它的承诺,如果后端需要,我们应该等待它

selection.set('workspace', workspace);
selection.get('workspace').then(function(){
  selection.save();
});
因此,本质上,您可能会看到非确定性行为:

  • 适用于此方法/为什么不在此处
  • 为我工作
  • 过去工作
这不仅适用于集合之后的保存。我见过这样的情况:数据是从早期加载的,但由于某种原因,关系并不完整

我不确定为什么这不能序列化未实现关系的ID(我们总是知道ID,这就是JSON所需要的)