Ember 1.13.3中的服务器端错误处理

时间:2015-08-04 09:22:55

标签: javascript ember.js ember-data json-api

在Ember 1.13.3中使用服务器端错误的正确方法是什么?

我正在使用RESTAdapter,我尝试使用/不使用此代码:

handleResponse: function(status, headers, payload) {
if (payload.errors) {
  return new DS.InvalidError(payload.errors);
}
return this._super(...arguments);

}

我的服务器使用这样的JSON返回422:

            {
                errors: [
                    {
                        source: {pointer: 'data'},
                        detail: 'Not saved'
                    }
                ]
            }

在我的路线中,我以这种方式保存模型:

job.save().then(function() {
    console.log('OK');
  }).catch(function(err) {
    console.log('Error: ', err, ' Model ', job.get('isError'));
  });

如果出现错误,流程将进入catch块,而'err'是预期的InvalidError对象,但job.get('isError')返回false。

现在我不知道如何在组件UI中获取错误,因为模型属性isError始终为false。

由于

1 个答案:

答案 0 :(得分:1)

您错过了isError

的观点
  

如果为true,则适配器报告由于服务器端验证错误以外的任何原因而无法将本地更改保存到后端。

您应该检查的是isValid

  

当适配器未报告任何服务器端验证失败时,记录将处于有效状态。