Ember.js 如何截获余烬数据响应并采取替代措施。?

Ember.js 如何截获余烬数据响应并采取替代措施。?,ember.js,ember-data,Ember.js,Ember Data,我正在使用最新的ember数据库在我的ember应用程序中进行持久化 以下是我的路线定义: export default Ember.Route.extend({ model: function() { return this.store.find('language'); } }); 对此,有两种可能的响应: 正常情况:{“语言”:{“id”:123,“名称”:“英语”} 错误场景:{“错误响应”:{“状态”:“398648”,“消息”:“内部错误”。}}

我正在使用最新的ember数据库在我的ember应用程序中进行持久化

以下是我的路线定义:

export default Ember.Route.extend({

    model: function() {
        return this.store.find('language');
    }
});
对此,有两种可能的响应:

  • 正常情况:
    {“语言”:{“id”:123,“名称”:“英语”}
  • 错误场景:
    {“错误响应”:{“状态”:“398648”,“消息”:“内部错误”。}}
    这是所有错误的标准错误消息

在这两种情况下,响应都返回“http 200成功”状态代码。这意味着ember尝试调用resolve回调,并为错误场景生成错误。我需要为我们的模型定义处理这个问题。有什么方法可以截获此响应并采取其他操作吗?

您可以在序列化程序中执行此操作,在那里检查()或类似的操作:

export default Ember.Route.extend({

    model: function() {
        return this.store.find('language').then(function(language){
            //perform your check on the response here
            //if language contains error-response this.transitionTo('errorpage')
            //else return language -- that kinda thing.
        });
    }
});

首先,在收到错误时返回HTTP代码200是非常奇怪的。
余烬期望在错误情况下做出合理的响应。这意味着,如果您得到4xx错误,ember将激活ember.Route.error钩子();若服务器响应了验证错误(Ember-422中的默认代码),则Ember.Adapter将调用extractValidationErrors等等。简而言之,如果您遇到错误,请将其视为错误,而不是成功的响应。

我也遇到了同样的问题。我无法从为不同框架选择的设置中更改服务器响应-/