我有以下型号:
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 。它建议将 createRecord 包装在 waitForParents 函数中,该函数基本上创建父项,然后创建子项。虽然我尝试了他们的建议,但我仍然无法创建我的记录。问题是,即使先请求父级,它仍然需要子级的 id(尚未创建)。父请求使用以下有效负载发送:
{/*other_fields*/,"products":["/api/v1/products//"]}
请注意 url 中缺少的产品 ID。