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 也是一样的。
我想知道是否可以通过在单个请求中加载异步 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
我想 JSONAdapter 也是一样的。