2

私は mongodb、node.js、backbone.js を使用して、学習体験として役立つアプリを構築しています。この種のことのために、REST API から関連オブジェクトをフェッチするためのベスト プラクティスは何かを知りたいと思っています。

「投稿」オブジェクトと「ユーザー」オブジェクトがあり、投稿にはユーザーにリンクする「userId」プロパティがあるとします。

次のことを行う必要があります。

  1. クライアント側で投稿オブジェクトをフェッチします。投稿の「userId」プロパティを調べてから、そのユーザーを個別に取得します。これは、サーバー側のコードに関しては素晴らしくシンプルに見えますが、さらに複雑になると、多くのリクエストが発生する可能性があります。
  2. 同じリクエストで、投稿オブジェクトを取得し、サーバーに「参加」させて、関連するユーザー オブジェクトを提供します。

誰かが共有できる経験を持っていますか?

ありがとう

4

2 に答える 2

2

特定の UI ストーリーなしでこれに答えるのは難しいですが、提供された内容に基づいて、#1 が私が採用するアプローチに近いと言えます。ただし、userId の投稿を「検査」する代わりに、ユーザーへのリンクを提供し、rel=userユーザー リソースのそのリンクをたどってください。私は、これらのリソースがクライアントではなくサーバーによって構築された明示的なリンクを介してナビゲートされる HATEOAS パラダイムを好みます。

これは明らかにより多くの XHR をもたらしますが、それが懸念される場合は、結合なしでそれを提供するビュー モデルをビューに要求することをお勧めします。これは、クライアントに必要なデータの構築を任せることなく、クライアントにサービスを提供する専用モデルを公開することによって行われます。h番目、

マイク

于 2012-08-22T03:26:21.037 に答える
1

MongoDB にはサーバー上で「結合」する機能がないため、関連する質問はおそらくデータ モデリングの問題であり、関連するユーザー データをリンクまたは埋め込むことがより理にかなっているのかどうかです。

Fetch a post object on the client side. Inspect the "userId" property
of the post and then separately fetch that user. This seems to be
nice and simple in terms of server-side code, but could end up making
lots of requests if things get complicated further down the line.

$inこのオプションに最も近いのは、投稿を取得してから、 operatorを使用して、投稿で言及されているユーザー ID の関連情報をクエリすることです。サーバーはインデックス内の各ユーザー ID をルックアップするためのクエリを実行しているため、ユーザー ID が多数ある場合、パフォーマンスが低下する可能性があります。

考慮すべきもう 1 つの一般的なアプローチは、ハイブリッド オプションです。

どちらがより適切に機能するかは、実際のユース ケースと、アプリケーションのページに表示する情報によって異なります。

于 2012-08-22T07:25:13.387 に答える