ember-data async hasMany request

时间:2015-03-24 12:36:34

标签: rest ember.js ember-data

我的模型看起来像:

export default DS.Model.extend({
  ordernumber: DS.attr('string'),
  allowMeasurementsFrom: DS.attr('date'),
  devices: DS.hasMany('device', { async: true })
});

当我向一个关于一个订单的页面发出请求时,我收到了这些请求:

GET "http://localhost:51799/devices/0fd27d12-fd25-412d-bcf6-6e84064bd951".
GET "http://localhost:51799/devices/a84142bd-b314-4e6e-a29f-6821fb7f32fb".
GET "http://localhost:51799/devices/3b1ed530-1cf6-42fb-90b7-f1d4886dce05".

但我预计会有多个ID的请求,就像在文档here中所说的那样。像:

GET "http://localhost:51799/devices?ids[]=3b1ed530-1cf6-42fb-90b7-f1d4886dce05&ids[]=a84142bd-b314-4e6e-a29f-6821fb7f32fb&ids[]=3b1ed530-1cf6-42fb-90b7-f1d4886dce05".

这是我的模板:

{{id}}

{{#each dev in devices}}
  <img {{bind-attr src=dev.image}}>
  {{dev.deviceId}}
{{/each}}

我尝试直接在设备中循环并首先将它们放入控制器,然后循环浏览设备。在这两种情况下,它都会n次请求。

我正在使用DS.RESTAdapter。版本:Ember:1.10.0 Ember数据:1.0.0-beta.15

1 个答案:

答案 0 :(得分:2)

我的信息有点过时了。幸运的是,您需要的信息相当合理。你想要coalesceFindRequests property。将其设置为适配器中的true,它应该像您在指南中看到的那样合并它们。如果您还没有覆盖适配器,可以通过创建如下所示的adapters/application.js文件来实现:

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