3

我正在开发一个带有 Rails 后端的 Ember 应用程序,使用出色的JSONAPI::Resources gem 来公开我的数据。

我想在侧载某些关系时使用store.findRecord,等从我的后端获取记录。store.queryJSONAPI::Resources支持 规范的这一部分,但我不知道如何让 Ember Data?include=...在请求 URL 中包含参数。

如何指示 Ember Data (2.2.0) 在获取资源时要求后端包含关系?

4

2 回答 2

7

如果可以,您可以试用 Ember Data 2.4 beta,其中包含ds-finder-include功能标志。

此功能标志使您可以使用键传递选项哈希includes

要了解如何启用功能标志,请查看指南

于 2016-01-19T02:10:38.907 回答
4

我处理这个问题的方法是修改我的应用程序适配器来处理包含,然后在我的查询中传递包含作为我的适配器选项。现在我只处理一个包含,但处理一个数组应该不会太难。

应用程序/适配器/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']
  }
于 2016-01-19T02:25:55.687 回答