【问题标题】:Ember.js commiting parent model with already existing child modelsEmber.js 使用已经存在的子模型提交父模型
【发布时间】:2013-03-01 11:31:21
【问题描述】:

干杯!例如我有三个模型:

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 请求。

【问题讨论】:

    标签: javascript ember.js ember-data


    【解决方案1】:

    我相信您的问题在于映射嵌入记录的过时方式。这曾经发生在序列化程序中,但现在发生在适配器上的 map() 上......

    您可以在此处查看集成测试: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

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2014-06-08
      相关资源
      最近更新 更多