我有一个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?
}
});
}
});
答案 0 :(得分:0)
你的路线不应该做什么!这是适配器的工作!
不要忘记queryRecord
。这是你应该从你的路线调用的方法。其余的在适配器中更好。
但是,您可以在路线中执行此操作。重要的是了解error substates。只需throw "foo"
,或实现自己的错误对象。接下来显示错误子状态的404消息。