EmberJS:当商店查询导致空集合时,从路径模型钩子中抛出404

时间:2017-05-01 11:57:35

标签: ember.js json-api

我有一个Ember项目(v2.12.0),我希望通过它的slu found找到某个模型。这些slu is应该是独一无二的。

但是,当我使用Ember.store.query()查询记录时,返回的承诺始终根据query()和JSON API规范的性质解析为集合。

当服务器找不到具有该特定slug的记录时,响应仍然是200 OK,其中my-model[]的空集合作为其有效负载。

我的问题是:

我怎样才能在我的余烬路径model()挂钩中最好断言该集合包含正好1项,或中止并转换为404路由/页面否则?< /强>

这是我到目前为止的代码:

import Ember from 'ember';

export default Ember.Route.extend({

model(params) {

    return this.store.query('my-model', {
        filter: {
            slug: params.myModelSlug
        }
    }).then((modelCollection) => {

        // Code below fails when modelCollection is empty...
        return modelCollection.get('firstObject');

        if (modelCollection.get('length') === 0) {
            // Throw new Ember Error 404?
        }
    });
}
});

1 个答案:

答案 0 :(得分:0)

你的路线不应该做什么!这是适配器的工作! 不要忘记queryRecord。这是你应该从你的路线调用的方法。其余的在适配器中更好。

但是,您可以在路线中执行此操作。重要的是了解error substates。只需throw "foo",或实现自己的错误对象。接下来显示错误子状态的404消息。