【问题标题】:Ember -- JSON API Adapter Error HandlingEmber -- JSON API 适配器错误处理
【发布时间】:2016-03-15 22:40:15
【问题描述】:

我想在 API 请求导致 404 错误时采取特定操作。我已经读到,执行此操作的适当方法是处理应用程序适配器中的错误,如下所示:

  handleResponse: function(status, headers, payload){
    if(status === 404 && payload.errors){
      //handle error
    }
    return this._super(...arguments);
  }

问题是,一旦我设置了适配器,它就不会完成页面加载,因此我可以处理页面本身的错误。相反,它会自动将我带到一些仅显示“适配器错误”的错误路线。如何停止/覆盖此行为?

【问题讨论】:

    标签: javascript ember.js ember-data


    【解决方案1】:

    原来我需要调整应用程序适配器中的 handleResponse 挂钩,以将新的 requestData 参数传递给 super 方法。

    handleResponse (status, headers, payload, requestData) {
        return this._super(status, headers, payload, requestData);
    },
    

    然后我只是将问题中的第一行代码更改为

    handleResponse: function(status, headers, payload) {
    

    handleResponse: function(status, headers, payload, requestData) {
    

    然后我能够捕获并处理错误

    【讨论】:

      【解决方案2】:

      也许您可以根据以下请求处理它:

      return this.get('store').find('user', userId).then((user) => {
          this.set('user', user);
      }).catch((reason) => {
          var possible404 = reason.errors.filterBy('status','404');
          if(possible404.length !== 0) {
            // Handle 404 error
          }
      });
      

      虽然这不是您想要的解决方案,但此替代方案将允许您自定义更多。顺便说一句,自动行为似乎是 application-error substates 启动 404,所以如果你想覆盖该行为,请阅读它。

      【讨论】:

      • 谢谢,不久前我想出了另一个答案,但忘记了我已经发布了这个。我会发布我想出的答案。
      猜你喜欢
      • 2016-04-19
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2013-09-03
      相关资源
      最近更新 更多