Javascript Ember 1.13.3中的服务器端错误处理
在Ember 1.13.3中,处理服务器端错误的正确方法是什么 我正在使用RESTAdapter,并尝试使用/不使用以下代码:Javascript Ember 1.13.3中的服务器端错误处理,javascript,ember.js,ember-data,json-api,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); } 我的服务器返回422,其中包含以下JSON:
handleResponse: function(status, headers, payload) {
if (payload.errors) {
return new DS.InvalidError(payload.errors);
}
return this._super(...arguments);
}
我的服务器返回422,其中包含以下JSON:
{
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
谢谢你没有抓住重点 如果为true,则适配器报告由于服务器端验证错误以外的任何原因无法将本地更改保存到后端 你应该检查的是 当适配器未报告任何服务器端验证失败时,记录将处于有效状态
你说得对。谢谢在错误中使用“pointer:”data“”,我想告诉您这是全局错误,而不仅仅是属性错误。但我怎样才能从模型中得到这个错误呢?如果我使用“指针:'data/attributes/name'”,那么调用mode.get('errors').get('name')就没有问题。注释中问题的答案隐藏在发布的答案中。如果不是验证错误,而是其他错误,则响应应带有不同的错误状态代码,例如400(错误请求)。在这种情况下,可以在promise的错误回调中处理错误。通常解析
responseText
以获取错误。