2017-11-09 8 views
0

モデルがあり、houseと呼び、もう1つはkitchenです。 houseモデルを保存しようとすると、その関係belongsTo()kitchenが破棄されます。Ember.js:レコードを保存すると、belongsTo関係が破棄されます

export default DS.Model.extend({ 
name: DS.attr('string') 
}); 

が、私はそれを埋める、私の記録を作成し、最終的にそれを保存しています:

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    kitchen: DS.belongsTo('kitchen', {polymorphic:true}), 
}); 

kitchenは非常に単純なモデルである:

houseはそのようなkitchenbelongsTo()関係を持っています成分。これはそれに関連する機能です。

createHouse() { 
    this.createKitchen().then(() => { // this will create, fill and save a kitchen record 
      this.createAnSetHouse(); // this will create and fill a house record as 'house' 
      console.log(this.get('house').get('kitchen')); // this properly get the kitchen record 
      this.get('house').save().then(() => { 
       console.log(this.get('house').get('kitchen')); // and here the relationships is set to null ??? 
     /* rest of the function */
    } 

あなたは上記のスニペットで見ることができるように、一度、私はjhouseレコードを保存、関係は、それが適切に事前に設定した場合でも、nullに設定されています。
"content": { "attributes": { "kitchen_id": null, "name": "myName" } }

任意のヒントが高く評価されています

EDITは

私はそれを言及している必要があります

、これは私のサーバーが受信ペイロードです。

FINAL EDIT

私は​​に私の約束といくつかの奇妙なことをやった、それを解決する方法を考え出したが、私はkitchenレコードがまだ保存されていなかった場合でもresolve()Ember.RSVP.defer()を持っていました。..
約束事で奇妙なことをしないと、上のスニペットはほとんどの人にとってうまくいくはずです。

答えて

0

推測したように、私は

this.get( '家')へのあなたのAPIレスポンスを考える。(セーブ)

は、上書きキッチン関係のないパケットであり、ローカルモデル。

デベロッパーコンソールでレスポンスを見ると、何が表示されますか?

また、家を救うときにあなたのAPIが暗黙的にそれを保持していない限り、キッチンがそのコードで永続化されることはありません。

私はそれを言及している必要があります
+0

、これは私のサーバーが受信ペイロードである: ' "内容":{ は、 "属性":{ "kitchen_id":ヌル、 "名": "がmyName" } } ' – maje

+0

私は 'キッチン' IDを取得し、IDだけを押して、バックエンドがそれを処理するアダプタを使用しています。 – maje

+0

コンソールの場合、最初の呼び出しは 'content:Class {__ember1510241294711:" ember1457 "、store:Class、_internalModel:internalModel、currentState:{...}、...}、そして2番目の呼び出し:' content:null'を返します。 – maje

関連する問題