2013-02-22 71 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