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
Javascript 余烬数据:发生错误时回滚createRecord_Javascript_Ember.js_Ember Data - Fatal编程技术网

Javascript 余烬数据:发生错误时回滚createRecord

Javascript 余烬数据:发生错误时回滚createRecord,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我正试图找到在使用余烬数据时出现错误时避免添加记录的最佳方法: 这是我的代码: 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') })

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

这是我的代码:

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) 控制台错误仍然出现

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


提前感谢

您需要捕获控制器中的错误,然后使用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
        });
    }
  }

我也有这个问题。你最终如何解决这个问题?