【问题标题】:Handling promise rejection in ember-data with findQuery()使用 findQuery() 处理 ember-data 中的承诺拒绝
【发布时间】:2013-08-08 17:30:27
【问题描述】:

使用 findQuery(..query..); 时,我似乎无法让 ember-data 拒绝失败(404);查找(..id..);工作正常。

所以在路线上:

App.PostRoute = Ember.Route.extend({

  serialize: function(model, params) {
    return { post_id: model.get('slug') };
  },

  model: function(params){
    var query = {};
    query.slugs = params.post_id;
    return App.Post.findQuery(query).then( 
      function (data) {
        return data.get('firstObject');
      }, 
      function (error) {
        console.log('error');
        throw 'boom!';
      }
    )
  },

  setupController: function(controller, model){
    this.controllerFor('post').set('content', model);
  },

  events: {
    error: function (reason, transition) {
     console.log('Error!');
    }
  }

});

我也试过这个:

return App.Post.findQuery(query).then( function (data) {
  return data.get('firstObject');
}).then( null, function (error) {
  console.log('error');
  throw 'boom!';
});

没有快乐。我可以看到对 URL 的请求返回为 404,但从未触发过承诺错误。我错过了什么?

【问题讨论】:

  • 这仍然是个问题吗?代码看起来是正确的,但如果你有一个 JSBin/fiddle,它可能会显示出其他一些东西。

标签: ember.js ember-data rsvp.js


【解决方案1】:

我不知道这是否只是一个错字,但你的PostRoute 中的events 哈希应该被称为events 你已经将它定义为单数event 这可能是为什么你的@ 987654327@ 未找到该哈希内的钩子并且未调用它:

App.PostRoute = Ember.Route.extend({
  ...
  events: {
    error: function (reason, transition) {
      console.log('Error!');
    }
  }
});

希望对你有帮助。

【讨论】:

  • 您好!是的,可悲的是,这只是一个错字。我已经调整了上面的例子。我已将此归结为 findQuery 的实现问题,这里有一个解决问题的开放 PR:github.com/emberjs/data/pull/1096#issuecomment-22246022
  • @i0n,很高兴知道,我在 github 通知电子邮件中看到你实际上与 Paul Chavard 谈论过这个问题,抱歉我帮不上忙。
  • @i0n @intuitivepixel 你有运气解决这个问题吗?我刚刚raised this issue
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
相关资源
最近更新 更多