我有一个端点/activities
,它使用JSON以典型的方式运行RESTful API。我当然可以做以下事情:
model: function() {
return this.store.find('activity');
}
返回活动列表。或者我可以:
model: function(params) {
return this.store.find('activity', params.id);
}
获取特定的活动记录。这很好用。但API也允许使用URL参数进行某些过滤。例如,
GET / activities / type / exercise
与完整列表不同,它只会带回与“练习”相关的活动。使用ember-data回退数据的最佳方法是什么?至少我希望数据返回,与正确的模型相关联,并通过`DS.RecordArray或类似对象进行迭代。
理想情况下,我还希望每次点击此路线时都避免发出网络请求,尽管这可能是我无法“开箱即用”的。如果有任何最佳实践仍然感兴趣。
答案 0 :(得分:1)
Ember已经可以查询数据,默认使用查询参数,即
store.find(activities, {type: 'exercise'}); // /activities?type=exercise
您可以覆盖活动适配器上的findQuery
,以便符合您的api:
// /adapters/activity.js
import DS form 'ember-data';
export default DS.RESTAdapter.extend({
findQuery: function(store, type, query) {
for(var key in query) break; // get first key in the example 'type'
var path = ['', key, query[key]].join('/');
return this.ajax(this.buildURL(type.typeKey) + path, 'GET');
},
});
我还没有对此进行过测试,但它应该有效。