2013-02-22 59 views
3

干杯!例如,我有三个型号:Ember.js致力与已有的儿童模型父母模型

App.Foo = DS.Model.extend({ 
    bars: DS.hasMany('App.Bar', {embedded:'always'}), 
    bazes: DS.hasMany('App.Baz', {embedded:'always'}) 
}); 

App.Bar = DS.Model.extend({ 
    foo: DS.belongsTo('App.Foo') 
}); 

App.Baz = DS.Model.extend({ 
    foo: DS.belongsTo('App.Foo) 
}); 

而且适配器映射这样的:

App.RESTSerializer = DS.RESTSerializer.extend({ 
    init: function() { 
    this._super(); 

    this.map('App.Foo', { 
     bars:{embedded: 'always'}, 
     bazes:{embedded: 'always'} 
    }) 
    } 
}); 

我先救孩子记录分离交易(github.com/emberjs/data/pull/440):

barTransaction = App.store.transaction(); 
bar = barTransaction.createRecord(App.Bar); 

//later 
bazTransaction = App.store.transaction(); 
baz = bazTransaction.createRecord(App.Baz); 

//later 
fooTransaction = App.store.transaction(); 
foo = fooTransaction.createRecord(App.Foo); 

//later 
foo.get('bars').addObject(bar); 
foo.get('bazes').addObject(baz); 
fooTransaction.commit(); 

我只是想知道是否可以用一个POST请求保存父项和所有子项记录? 现在它正在为每个子记录单独创建一个POST请求。

回答

2

我相信你的问题是映射嵌入式记录的过时方式。这用于串行发生,但现在发生的适配器上的地图()上...

您可以在这里看到的集成测试:https://github.com/emberjs/data/blob/master/packages/ember-data/tests/integration/embedded/embedded_saving_test.js#L50

我想沿着这些线路的东西将工作:

App.Foo = DS.Model.extend({ 
    bars: DS.hasMany('App.Bar'), 
    bazes: DS.hasMany('App.Baz') 
}); 

App.Bar = DS.Model.extend({ 
    foo: DS.belongsTo('App.Foo') 
}); 

App.Baz = DS.Model.extend({ 
    foo: DS.belongsTo('App.Foo') 
}); 

App.Adapter = DS.RESTAdapter.extend({..configs..}); 

App.Adapter.map('App.Foo', { 
    bars:{embedded: 'always'}, 
    bazes:{embedded: 'always'} 
}) 

这应该POST的API:api.com/foo和包括barsbazes