在ember-data中加载hasMany关系的问题?

时间:2013-03-25 22:05:29

标签: ember.js ember-data

这是ember rc1 master从3月25日开始,以及ember-data rev 12.我无法得到Model的hasMany to sideload - 侧载数据在商店中没有实现。使用默认的RESTAdapter。

  App.AssetLinkGroup = DS.Model.extend({
      asset_links : DS.Model.hasMany('App.AssetLink')
  })
  App.AssetLink = DS.Model.extend({
      asset_link_group : DS.Model.belongsTo('App.AssetLinkGroup')
  })

我从App.AssetLinkGroup.find(5)服务器返回的json如下(为了简洁,删除了很多基本属性,如名称/日期/等)

 {
 "asset_link_group": {

      "asset_link_ids": [154,155],

      "asset_links": [
           {
                id : 154,
                "asset_link_group_id": 5
           },
           {
                id : 155,
                "asset_link_group_id": 5
           }
      ]
   }
 }

App.AssetLinkGroup.find(5)从服务器成功加载AssetLinkGroup模型。但是,AssetLinks似乎没有在商店中实现。当我尝试App.AssetLink.all()。content时,它显示一个空数组。

此外,如果我尝试:

var algroup5 = App.AssetLinkGroup.find(5);
algroup5.get('asset_links');

它向服务器发出一个findMany调用,它告诉我它肯定在商店中没有这些记录。

为什么在加载AssetLinkGroup时,不会在商店中实现AssetLink记录?

2 个答案:

答案 0 :(得分:4)

我会说JSON中的asset_links数组应该在根级别。

{
 "asset_link_group": {
   "asset_link_ids": [154,155]
 },
 "asset_links": [
   {
      id : 154,
      "asset_link_group_id": 5
   },
   {
       id : 155,
       "asset_link_group_id": 5
   }
  ]
 }

答案 1 :(得分:0)

您是否已将适配器配置为侧载asset_links中的记录?假设您使用的是RESTAdapter,您可以执行以下操作:

DS.RESTAdapter.configure('App.AssetLink',
    sideloadAs: 'asset_links'
);