用于侧载第11版的ember-data映射

时间:2013-01-26 16:43:00

标签: ember-data

关于sideloading的修订版11 ember-data的映射是怎么回事?

我有以下2个模型类:

WZ.Exercise = WZ.Model.extend
  name: DS.attr 'string'
  description: DS.attr 'string'
  group: DS.belongsTo('WZ.Group', {key: 'groups'})  #I don't think the key does anything

WZ.Group = WZ.Model.extend
  name: DS.attr 'string'
  exercises: DS.hasMany('WZ.Exercise')

以前我在适配器上有一个映射属性,似乎不再做任何事情:

WZ.Store = DS.Store.extend
  revision: 11
  adapter: DS.RESTAdapter.create
    bulkCommit: false
    mappings:
      groups: WZ.Group

sideloading代码期望sideloaded根json属性与属性名称相同:

for (var prop in json) {
  if (!json.hasOwnProperty(prop)) { continue; }
  if (prop === root) { continue; }
  if (prop === this.configOption(type, 'meta')) { continue; }

  sideloadedType = type.typeForRelationship(prop);

我不认为无论如何都要绕过这个。要么json处于代码期望的状态,要么它不起作用。

2 个答案:

答案 0 :(得分:2)

这就是我侧载数据的方式:

DS.RESTAdapter.configure('App.Groups', {
    sideloadAs: 'groups'
});

App.Store = DS.Store.extend({   
    revision: 11,
    adapter: DS.RESTAdapter.create({})   
});

答案 1 :(得分:0)

我遇到了类似的问题,并在ember_data_example项目中找到了一个解决它的映射。在我的例子中,ticketEntries:hasMany('App.TicketEntry')没有加载。


    // Prepare our global Ember Data 'store'
    App.RESTSerializer = DS.RESTSerializer.extend({
      init: function() {
        this._super();

        this.map('App.Ticket', {
          creator: {embedded: 'always'},
          ticketEntries: {embedded: 'always'}
        });
      }
    });

    App.Adapter = DS.RESTAdapter.extend({
      bulkCommit: false,
      serializer: App.RESTSerializer.create()
    });

    App.Store = DS.Store.extend({
      revision: 11,
      adapter: App.Adapter.create()
    });

    App.store = App.Store.create(
    );