在我们的Ember应用程序中,我有3种不同的模型:
问题由属于组织的用户创建。 organizations
和users
都有一个issues
数组,其中包含一组属于issues
模型的问题ID。例如,这就是users
模型的样子:
// app/models/users.js
export default DS.Model.extend({
name: DS.attr('string'),
email: DS.attr('string'),
belongsTo: DS.belongsTo('organizations'),
issues: DS.hasMany('issues')
});
我们有两个API来查看所有问题的列表:
GET /users/:userId/issues
- 此API可解决用户创建的所有问题GET /organizations/:organizationId/issues
- 此API获取属于此组织的用户创建的所有问题问题是,当我调用this.store.findAll('issues');
时,Ember RESTAdapter默认调用GET /issues
。我无法想办法让RESTAdapter调用上面的任何URL。我无法使用this.store.findRecord('issues', 1);
,因为它通过ID GET /issues/:issueId
等ID来调用特定问题。如何让RESTAdapter调用上述URL而无需手动发出AJAX请求并将API响应推送到Ember Data?
答案 0 :(得分:0)
您需要自定义您的适配器(据我所知,您可以根据需要为每个型号配备一个适配器。)
在您的具体示例中,我认为您要自定义urlForFindAll
方法。
// maybe in app/organization/adapter.js (if using pods for a model specific adapter)
urlForFindAll(modelName) {
return 'urlYouWantToUseWithOrganizations';
}
关于这种情况的好文章在Ember Igniter