Ember数据:出错时回滚createRecord

时间:2014-12-02 17:20:12

标签: javascript ember.js ember-data

我试图找到避免在使用Ember数据时出现错误时添加记录的最佳方法:

这是我的代码:

createUser: function() {
  // Create the new User model
  var user = this.store.createRecord('user', {
    firstName: this.get('firstName'),
    lastName: this.get('lastName'),
    email: this.get('email')
  });

  user.save().then(function() {
    console.log("User saved.");
  }, function(response) {
    console.log("Error.");
  });
},

我在后端验证架构并在失败时返回422错误。

如果我没有处理错误,则会将记录添加到网站,我也会收到控制台错误。

所以我这样做了:

  user.save().then(function() {
    console.log("User saved.");
  }, function(response) {
    user.destroyRecord();
  });

在阅读服务器响应后删除记录的哪种方法有效:

1)我看到记录出现并消失(就像一个视觉故障,以某种方式说出来)。

2)仍然出现控制台错误。

有没有办法更好地处理这个问题?我的意思是,有没有办法避免在服务器返回错误时添加记录?有没有办法避免显示控制台错误?

提前致谢

1 个答案:

答案 0 :(得分:0)

您需要在控制器中捕获错误,然后使用deleteRecord()将其从商店中删除:

actions: {
    createContent() {
      let record = this.store.createRecord('post', {
        title: ''
      });

      record.save()
        .then(rec => {
          // do stuff on success
        })
        .catch(err => {
          record.deleteRecord();
          // do other stuff on error
        });
    }
  }