我正在开发一个带有 Rails 后端的 Ember 应用程序,使用出色的JSONAPI::Resources gem 来公开我的数据。
我想在侧载某些关系时使用store.findRecord
,等从我的后端获取记录。store.query
JSONAPI::Resources支持 规范的这一部分,但我不知道如何让 Ember Data?include=...
在请求 URL 中包含参数。
如何指示 Ember Data (2.2.0) 在获取资源时要求后端包含关系?
我正在开发一个带有 Rails 后端的 Ember 应用程序,使用出色的JSONAPI::Resources gem 来公开我的数据。
我想在侧载某些关系时使用store.findRecord
,等从我的后端获取记录。store.query
JSONAPI::Resources支持 规范的这一部分,但我不知道如何让 Ember Data?include=...
在请求 URL 中包含参数。
如何指示 Ember Data (2.2.0) 在获取资源时要求后端包含关系?
如果可以,您可以试用 Ember Data 2.4 beta,其中包含ds-finder-include
功能标志。
此功能标志使您可以使用键传递选项哈希includes
。
要了解如何启用功能标志,请查看指南。
我处理这个问题的方法是修改我的应用程序适配器来处理包含,然后在我的查询中传递包含作为我的适配器选项。现在我只处理一个包含,但处理一个数组应该不会太难。
应用程序/适配器/application.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
urlForFindRecord(query, modelName, snapshot) {
var url = this._super(...arguments);
return this._processIncludes(url, snapshot);
},
urlForFindAll(query, modelName, snapshot) {
var url = this._super(...arguments);
return this._processIncludes(url, snapshot);
},
_processIncludes(url, snapshot) {
var options = snapshot && snapshot.adapterOptions;
if (options && options.include) {
url = `${url}?include=${options.include}`;
}
return url;
},
});
然后,在我的路由模型钩子中,我只添加了我的适配器选项。
return this.store.findRecord('myModel', params.id, {
adapterOptions: {
include: ['myChildModel']
}