使用store.findQuery时出现404错误

时间:2014-01-03 14:24:13

标签: ember.js ember-data

我正在使用Embers findQuery方法并想知道如何在没有结果时捕获404错误?

this.store.findQuery('customer', { hasProjects: true, getArchivedProjects: archived }).then(function(customers) {
});

如果查询为空,则此then函数中的代码不会被触发,因此我甚至无法检查customers的类型。

示例:

this.store.findQuery('customer', { hasProjects: true, getArchivedProjects: archived }).then(function(customers) {
  console.log('foo')
});

如果查询返回404,则不会触发console.log

2 个答案:

答案 0 :(得分:2)

findQuery函数返回一个promise。然后,您可以为then()提供两个函数,第一个是成功路径,第二个是失败路径......例如:

this.store.findQuery('customer', { hasProjects: true, getArchivedProjects: archived }).then(function(customers) {
    console.log('foo')
}, function(error) { /* do something with error */ });

答案 1 :(得分:2)

替代答案:

在相应的路线中添加error挂钩:

App.CustomersIndexRoute = Ember.Route.extend({
  actions: {
    error: function(reason) {
      if (reason.status === 404) {
        // do something ...
      }
    }
  }
})

请参阅:http://emberjs.com/guides/routing/asynchronous-routing/#toc_when-promises-reject