2017-04-10 5 views
1

私はEmberにとっては少し新しくなっています。この質問が私のフレームワークの理解の一般的な不足を照らしてくれたら私を許してください。Ember hasMany複数のモデルがあります

基本的に私はEmberとContentfulを使用しようとしています。私はこのアドオンを見つけました。これはこれをかなりシンプルにするようです。https://github.com/davidpett/ember-data-contentful

しかし、私は本当に私を挫折させ始めている1つの問題にぶつかっています。私は、多くの異なるコンテンツタイプの複数を参照できる「多くの参照」フィールドを持つコンテンツタイプを持っています。基本的に、私はいくつかのモジュールの配列になる "モジュール"フィールドを持っています。各モジュールは基本的にそれ自身のモデルになります。

燃えさしで

modules: hasMany('module')

module

しかし、各コンテンツ・タイプに対応するモデルが必要であると仮定すると、多くの異なるモデルの1つであることができます。

私は既にここに質問をしています:https://github.com/davidpett/ember-data-contentful/issues/24これはまだかなりうまく動作しません。

答えて

2

これを解決するには、それぞれのモデルにContentfulシステムメタデータのプロパティを実装する基本モデルを継承させる必要があります。それらはjsonレスポンスのsysプロパティにあります。

ベースモデルのコンテンツタイプに応じて、このベースモデルを、そのコンテンツタイプに対応する特定のモデルに拡張できます。

投稿したスレッドで同様のことをしようとしていることがわかりました。あなたが実行している問題は、基本クラスにcontentTypeプロパティがないことです。

+0

ありがとうございます!問題は、モジュールが拡張しているベースモデルに 'contentType'というプロパティがあることです。 -/https://github.com/davidpett/ember-data-contentful/blob/master/addon/models/contentful.js – morrisbret

+0

これはどのように表示されますか。私はそこにsys.contentType.sys.idプロパティを置くどこかにアダプタがあると思いますか? – Robban

+0

これは正しいRobbanかもしれない:https:// github。 – morrisbret

0

まあ、私は内容が分かりません。

私のチームは、特定のモデル手動を要求する計算を使用することにより、ダイナミック型のこの種を解決しました。私たちは、hasManyで複数のモデルをサポートするためのより良い方法を見つけられなかったので。そしてそれは本当にうまくいく。
しかし、バッチクエリでは、パフォーマンスを向上させるためにバッチリクエストの折りたたみ手法を実装する必要があります。

もう1つの考え方は、hasManyをDS.attr()を型なしで置き換えることです。そして、それらのモジュールをpushPayloadして覗くことができるかどうか試し、あなたのモジュールモデルをあなたのモデルのモデルモジュールに手動でマッチさせてください。これは動作しないか、GET要求に対してのみ機能します。
または、これらのペイロードモデルの名前/ idをmodel.modulesにマッチさせ、計算を使用して適切なレコードをピークにしてモデルにマウントします。

+0

計算を使用して特定のモデルを手動で要求するコードスニペットを提供できますか?誰かがそれをやり遂げる方法を確かめていない。ありがとう! – morrisbret

0

ember-data-contentful libに問題がありました。バージョン0.2.1へのダウングレードは今のところ問題を解決します。著者はバグを認識しており、将来のバージョンで修正を検討しています。みんなで助けてくれてありがとう!

関連する問題