事务创建对象

时间:2013-08-13 07:02:50

标签: ember.js ember-data

我有一个大问题。在我的模型中,我有以下对象“事件”,“问题”,“用户”。该问题与事件对象具有belongsTo关系,并且未嵌入。用户对象是问题的嵌入对象,也是belongsTo关系。在我的示例中,我想创建一个问题,然后将发布者(用户对象)设置为发布并将其发布到服务器。

我收到以下错误:


未捕获错误:在状态rootState.loaded.updated.inFlight中尝试处理事件loadedData。用未定义的

调用

发布后,新的问题对象应设置为事件必须在服务器上更新的事件。 我如何解决问题?

setupController: function(controller, model){
 this._super(controller, model);
  var transaction = this.get('store').transaction();
  var issue = transaction.createRecord(App.Issue, {});
  controller.set('model', issue);
  var appController = this.controllerFor('application');
  controller.set('reporter',appController.get('user'));
}

saveIssue: function(){
   var issue = this.get('model');
   var rep = this.get('reporter');
   issue.set('reporter',rep);
   var transaction = issue.get('transaction');
     if(transaction != null){
        transaction.commit();
     }
}

1 个答案:

答案 0 :(得分:0)

我可以在代码中看到可能导致问题的一个区别是setupController您正在使用商店的defaultTransaction

var transaction = this.get('store').transaction();

但在saveIssue中您使用的是issue模型自己的交易,该交易可能是同一交易,也可能不是同一交易:

var transaction = issue.get('transaction');

所以我的建议是在两个地方都使用相同的交易,例如在saveIssue

var transaction = this.get('store').transaction();
if(transaction != null){
  transaction.add(issue);
  transaction.commit();
}
...

希望它有所帮助。