ember.js Ember数据:发生错误时回滚createRecord

fnx2tebb  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(111)

我试图找到最好的方法,以避免添加记录时,有一个错误使用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)仍然出现控制台错误。
有没有办法更好地处理这个问题?我的意思是,有没有办法在服务器返回错误时避免添加记录?有没有办法避免显示控制台错误?
先谢谢你

ymdaylpp

ymdaylpp1#

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

相关问题