Ember 数据批量获取异步有很多关系记录

Ember data bulk fetch async hasMany relationship records

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

给定以下模型:

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

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

当我在模板或控制器中的某处引用 属性 comments 时,它将在单独的请求中逐一获取 post 的相关评论。这导致许多请求,我想将这些请求合并到一个请求中,并在 id-属性.

上使用过滤器

是的,你应该使用 link 关系:

而不是这个:

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

这样做:

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

这样做的好处是您可以在后端进行 100% 的调整。

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

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

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

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

获取已知 ID 的多条记录

我想 JSONAdapter 也是一样的。