2016-07-14 26 views
0

更新:以下はEmber Data Relationshipに関するオリジナルの投稿で、EmberFireアダプターの問題に関連していると思われます。 Ember Dataのローカルstoreは適切に更新されているようですが、ストアが更新された後、これらのレコードは適切なFirebaseデータベースにプッシュされません。EmberFireのデータ関係が正しく更新されない

emberfireタグとfirebaseタグを追加して、そのコミュニティで回答が見つかるようにしました。どんな援助も感謝しています。私は必要に応じて追加情報を提供しています。


私はhasManyのとbelongsToの関係で定義されている2つのモデルがあります。ここで最初の「フレームワーク」のモデルである:

// -- Frameworks Model 
import DS from 'ember-data'; 
const { attr, hasMany } = DS; 

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
    attrs: { 
    questions: { serialize: 'ids' } 
    } 
}); 

export default DS.Model.extend({ 
    name: attr('string'), 
    reports: hasMany('report'), 
    questions: hasMany('question', {async: true}), 
    includedFramework: attr('string'), 
    reportOnlyOnce: attr('string', { defaultValue: false }), 
    frameBuilder: attr('string', {defaultValue: "none"}), 
    createdAt: attr('string'), 
    createdBy: attr('string'), 
    updatedAt: attr('string'), 
    updatedBy: attr('string') 
}); 

そして第二に「質問」モデル:私のルート上に

// -- Question Model 
import DS from 'ember-data'; 
const { attr, hasMany, belongsTo } = DS; 

export default DS.Model.extend({ 
    framework: belongsTo('frameworks', {async: true}), 
    detail: attr('string'), 
    type: attr('string'), 
    createdAt: attr('string'), 
    createdBy: attr('string'), 
    position: attr('number'), 
    options: hasMany('option') 
}); 

、私はモデルを定義する(この場合、フレームワークのモデルに引きテスト用ID):何らかの理由

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model(params) { 
    let id = params.report_id; 
    var self = this; 

    return Ember.RSVP.hash({ 
     report: this.store.find('report', id), 
     general: this.store.find('frameworks', '-KITSAxjdE5TiVdk-aPC') 
    }) 
    } 
}); 

、このフレームワークは、それに属するべきである6つの異なる「質問」の4を有している質問に格納された配列を有しています。なぜ私は4つのフレームワークモデルに格納されているのか、それらのうち2つは格納されていないのかわかりません。ページのための私のテンプレートで:

{{#each model.general.questions as |question|}} 

     {{#paper-item class="md-1-line"}} 
     <p class="question"> 
      {{question.detail}} 
     </p> 
     <p class="option"> 
      {{#if (eq question.type "text")}} 
      {{paper-input value=question.id onChange=(action (mut question.id))}} 
      {{/if}} 
     </p> 

     {{/paper-item}} 

{{#each model.general.questions as |question|}}は、実際にこのIDのためのフレームワークモデルに格納されている4つの質問のための素晴らしい作品が、他の2他の2つの質問は、belongsToの関係が参照していません正しいフレームワーク。

フレームワークモデルでシリアライザを追加しようとしましたが(上記のように)、変更はありませんでした。

私はまた、新しい質問を使用して作成されたときに、フレームワークストアに質問を追加し、手動で試してみました:どちらか

framework.get('questions').then(function(question) { 
    return question.pushObject(newQuestion); 
}) 

それと変わりません。

ご迷惑をおかけして申し訳ありませんが、他の関連するコードスニペットも提供させていただきます。

答えて

1

この問題はEmberFireがchildモデルが作成されたときに子モデルへhasMany参照して「親」モデルが自動的に更新されることはありませんbelongsTohasMany関係を持つモデルに応答する方法に関連しているようです。私は、Githubの問題にいくつかのコンテキストを追加https://github.com/firebase/emberfire/issues/412

+0

問題は、この問題を解決する方法を調査し続けることがGitHubの上で提出されました – tstirrat

関連する問題