我有一个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消息。