Ember.js Ember数据大容量异步获取有许多关系记录

Ember.js Ember数据大容量异步获取有许多关系记录,ember.js,ember-data,json-api,Ember.js,Ember Data,Json Api,我想知道是否有可能以一种在单个请求中加载async Has许多关系的方式配置Ember数据 鉴于以下模型: // models/post.js export default DS.Model.extend({ comments: DS.hasMany() }); // models/comments.js export default DS.Model.extend({ ... }); 当我在模板或控制器的某个地方引用属性comments时,它将在单独的请求中逐个获取帖子的相关评论。

我想知道是否有可能以一种在单个请求中加载async Has许多关系的方式配置Ember数据

鉴于以下模型:

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

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

当我在模板或控制器的某个地方引用属性
comments
时,它将在单独的请求中逐个获取帖子的相关评论。这会导致许多请求,我希望将这些请求与id属性上的筛选器合并为单个请求。

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

与此相反:

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


我想JSONAdapter也一样。

谢谢您的快速回复。如果大多数相关的
注释
已经在客户端存储中,该怎么办?然后它将重新蚀刻数据。我想在(可能)一个ember适配器中看到一个解决方案,它检测到必须查询同一型号的多个资源,然后在一个请求中组合id,而不获取许多记录,例如:
/api/comments/?id=1,3,23
适配器中必须设置一个开关(fe.RESTAdapter):
联合查找请求:true
。这将导致向服务器发出所需的请求:
api/comments?ids[]=1&ids[]=2
可能重复感谢!这正是我要找的!“我想JSONAPIAAdapter也一样”,是的,你是对的。还具有
coalesceFindRequests
属性。我原以为默认值应该是
true
,但现在仍然是
false
。因此,如果您想使用此功能,您需要自己启用它。