私は次のモデルを持っています:
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'),
}
これら 2 つのモデルを使用して、オファー (親) と製品 (子) の両方を作成します。
var offer = App.Offers.createRecord({/*fields*/}),
product = App.Products.createRecord({/*fields*/});
offer.get('products').pushObject(product);
offer.get("store").commit();
私がこれを行うときの問題は、FKを設定するために、親が子のIDと子が親のIDを必要とすることです。
ember-data リポジトリで問題と PR を調べたところ、https ://github.com/emberjs/data/pull/440 が見つかりました。基本的に親を作成してから子を作成するwaitForParents関数でcreateRecordをラップすることをお勧めします。彼らの提案を試してみましたが、まだレコードを作成できません。問題は、親のリクエストが最初に行われたとしても、まだ作成されていない子の ID が必要なことです。親リクエストは、次のペイロードで送信されます。
{/*other_fields*/,"products":["/api/v1/products//"]}
URL に商品の ID がないことに注意してください。