Ember数据批量获取async hasMany关系记录

时间:2018-04-19 09:28:29

标签: ember.js ember-data json-api

我想知道是否可以以异步方式配置Ember数据在单个请求中加载多个关系。

鉴于以下模型:

// models/post.js
export default DS.Model.extend({
  comments: DS.hasMany()
});

// models/comments.js
export default DS.Model.extend({
  ...
});

当我在模板或控制器中的某处引用属性comments时,它将在单独的请求中逐个获取帖子的相关注释。这导致了许多请求,我想将这些请求与id-property上的过滤器组合成一个请求。

2 个答案:

答案 0 :(得分:2)

您必须启用一个名为coalesceFindRequests: true的所需行为的开关,您可以在应用程序适配器中设置,如下所示:

// adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
    coalesceFindRequests: true,
});

现在,Ember将通过..api/comments?ids[]=1&ids[]=2

获取已知身份证的多条记录

我认为JSONAdapter也是一样。

答案 1 :(得分:0)

是的,你应该使用链接关系:

而不是:

relationships: {
    commend: {
        data: [
            { id: '1', type: 'comment' },
            { id: '2', type: 'comment' }
        ]
    }
}

这样做:

relationships: {
    comments: {
        links: {
            related: 'http://example.com/post/A/comments'
        }
    }
}

关于这一点的好处是你可以在你的后端100%调整它。