灰烬数据休息适配器的错误处理不工作(Ember data Rest adapter error ha

2019-10-24 07:37发布

我有一个基本的灰烬应用程序,我想在保存处理验证错误(模型使用REST适配器)。 在我的路线我做的:

task.save().then(
                function() {alert("success");},
                function() {alert("fail");}
                ).catch(
                    function() {alert("catch error");}
                    );

当记录是有效的,我得到了“成功”的警报,但当记录是无效的,我不明白的“失败”警报或“捕获错误”。 在控制台中我得到:

POST http://localhost:8080/api/tasks 422 (Unprocessable Entity)
Error: The adapter rejected the commit because it was invalid

从API的回应是这样的:

{"errors":{"name":["can't be blank"],"parent_task":[]}}

我使用的灰烬数据1.13。

Answer 1:

您需要延长您的适配器处理的错误,其余的适配器不为你做这个(只主动型之一)

事情是这样的:

App.ApplicationAdapter = DS.RESTAdapter.extend({

  ajaxError: function(jqXHR) {
    var error = this._super(jqXHR);
    if (jqXHR && jqXHR.status === 422) {
      var response = Ember.$.parseJSON(jqXHR.responseText),
          errors = {};

      if (response.errors !== undefined) {
        var jsonErrors = response.errors;
        Ember.EnumerableUtils.forEach(Ember.keys(jsonErrors), function(key) {
          errors[Ember.String.camelize(key)] = jsonErrors[key];
        });
      }
      return new DS.InvalidError(errors);
    } else {
      return error;
    }
  }
});


文章来源: Ember data Rest adapter error handling not working