2017-04-21 6 views
0

related questionで、ember.jsの1対多の関係で親オブジェクトを子に追加する方法を知りたいと思います。今度は、新しく作成された子で親を作成または更新するときに、それらをサーバーに同時に保存する方法を知りたいと思います。ember.jsでネストされたオブジェクトを保存する方法

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child: { 
     prop1: val1 
     prop2: val2 
    } 
} 

が、エンバーのペイロードは、次のようになります:親に追加し、既存の子を持つとき

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:null 
} 

同じことが、更新のために行く

サーバは、このような何かを期待します。

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:2 
} 

だから、ペイロードで転送子オブジェクトではありませんが、既存の(そうでない場合はnull)場合にのみ、それはIDです):次に、ペイロードには次のようになります。サーバーの期待どおりにネストされたオブジェクトを送信することは可能ですか、2つのajax-post/put-requestを使用して両方のモデルを個別に保存する必要がありますか?

答えて

1

なぜあなたのサーバーは何かそんなものを期待していますが、あなたはこれをこのようにすることができます。

があなたの親モデルの最初のあなたは、あなたが子供に

this.store.createRecord('parent',{ 
     child: this.store.createRecord('child',{name: "John"}) 
    }); 

を作成する場所

child: DS.attr("") //this will give you ability to send any type in your case object to property child. 

を置くか、この

let parent = this.store.findRecord("parent", 1); 
let child = this.store.createRecord('child',{name: "John"}); 
parent.set("child", child); 

のようなものを持っている場合、個人的に私はそれを避けるだろうが、あなたは今までに何をしたいのかをjsで行うことができます。

+0

あなたの答えに感謝します。 RESTサーバーは、PHP/zend/apigilityで開発されたもので、そのままの状態でREST HAL仕様に従います。また、表示される形式はサーバーにデータをプッシュする方法です。 1つのリクエストで関連するレコードをプッシュし、同じ往復の中でサーバーによって処理されるようにすることが絶対に理にかなっていると思います。私の場合、私は会社のデータと住所のデータを持つフォームを持っています。これは1つの形式ですが、2つの関連するエンティティです。私がそれらを一緒に掲示することができなかったなら、私は非常に便利ではないと思う2つのアヤックスコールを必要とするでしょう。どんな提案も大歓迎です。 – Mannimalte

+0

これはRoR Emberの開発者として私がしていたことですが、このようなものが必要な場合、サーバが期待していることがあれば、twiddle plsが必要ならばこれを使用してください。 –

関連する問題