我有以下型号:创建父和子模型提交
App.Offers = DS.Model.extend({
name: DS.attr('string'),
createdBy: DS.belongsTo('App.Users'),
products: DS.hasMany('App.Products'),
startDate: DS.attr('string'),
endDate: DS.attr('string')
}
App.Products = DS.Model.extend({
description: DS.attr('string'),
img: DS.attr('string'),
offer: DS.belongsTo('App.Offers'),
}
使用这两款车型我同时创建一个报价(父)和产品(子):
var offer = App.Offers.createRecord({/*fields*/}),
product = App.Products.createRecord({/*fields*/});
offer.get('products').pushObject(product);
offer.get("store").commit();
当我这样做时,问题在于父母需要孩子的ID,而孩子需要父母的ID才能设置其FK。
我查了一下ember-data回购中的问题和PR,我发现这个:https://github.com/emberjs/data/pull/440。它建议在一个waitForParents函数中包装createRecord,该函数基本上创建了父项,然后是子项。尽管我已经尝试过他们的建议,但我仍然无法创建我的记录。问题是,即使对父进程的请求是先做出来的,仍然需要子进程的标识(尚未创建)。父请求发送时携带以下有效负载:
{/*other_fields*/,"products":["/api/v1/products//"]}
请注意URL中产品的缺失ID。