0

次のマップに従うネストされたコレクションab、およびがあるとします。c

{"collection":"a",
 "children":[{"collection":"b",
              "name":"bee",
              "children"[{"collection":"c","name":"cee"}]}]}

そしてa1、これはMongoDbデータベースからフェッチされたものです$http:

{"title":"title a1",
 "id":"a1",
 "bee":[{"id":"b1"},{"id":"b2"}],
 "other_array":[{"foo":"bar"},{"foo":"baz"}]}

現在、bee配列には参照 ( id) しかありません。必要なのは、マップをたどって更新a1し、参照を実際のデータに置き換えることです。

データベースからのフェッチb1b2データが必要になり、それぞれが配列を持ち、その要素をコレクションceeからフェッチする必要があります。c

専用のバックエンド関数を簡単に作成できると思いますa1.

a1しかし、複数の $http/$resource 呼び出しを使用して、完全に詳細なバージョンを取得するにはどうすればよいでしょうか?

再帰関数を使用する必要がありますか?

それとも、$q とチェーンされた promise を使用するのが最善でしょうか?

マップをたどる方法 (関連するコレクションとその名前を知るため)、関連するアイテムを取得しb、次に関連するアイテムを取得しc、最後に updateを次a1のように置き換えa1ます。

{"title":"title a1","id":"a1","bee":[{"id":"b1","title":"title b1","other_stuff":"blah blah","cee":[{"id":"c1","title":"title c1","c_specific":"hi there"}]},{"id":"b2","title":"title b2","other_stuff":null,"cee":[]}],"other_array":[{"foo":"bar"},{"foo":"baz"}]}
4

1 に答える 1

0

ベンジャミン・グルエンバウムのコメントで示唆されているように、

必要な単一の値を取得するために複数の http 呼び出しを行うと、Web サイトの応答時間が遅くなり、ユーザー エクスペリエンスが低下します。

したがって、私はアイデアを完全に破棄し、ネストされたすべての配列が既に含まれているデータベースから 1 つのドキュメントをフェッチするだけにします。

唯一の欠点は、サブドキュメントを直接変更すると、そのサブドキュメントを含むすべてのドキュメントを手動で変更する必要があることです。

于 2015-02-08T15:11:37.727 に答える