emberjs:在存储查询导致空收集时,从路由模型钩中投掷404



我有一个Ember Project(v2.12.0(,我想通过其slug找到某个模型。这些sl应该是唯一的。

但是,当我查询使用Ember.store.query()的记录时,返回的承诺总是通过query()和JSON API规范的性质解决收集。

当服务器找不到特定slug的记录时,响应仍然是200 OK,将my-model[]的空收藏作为其有效载荷。

我的问题是:

我如何最好地在Ember Route的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?
        }
    });
}
});

那是您在路线中什么都不应该做的!那是适配器的工作!不要忘记queryRecord。那就是您应该从路线上调用的方法。剩下的在适配器中更好。

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

最新更新