1

私はソーシャルネットワークのように機能するCouchAppを持っています。ユーザーがクリックすると、post_id(高く評価された投稿のID)、user_id(投稿を高く評価したユーザーのID)、およびタイプのフィールドを持つCouchDBJSONドキュメントを作成して保存するいいねボタンがあります。 (値は「like」で、ドキュメントがlikeであることを示します)。

投稿と一緒に、受け取ったいいねの数を示したいと思います。私のマップ関数は次のようになります。

function(doc) {
  if (doc.type && doc.type == 'like') {
    emit(doc.post_id, 1);
  }
}

そして私の削減、これ:

function(post_ids, likes) {
  return sum(likes);
}

私の問題は、この関数がサイト内のすべての投稿のすべてのいいねの合計を返すことです。私のreduce.jsは問題なく、map.jsを微調整してpost_id引数を受け入れ、そのpost_idからいいねだけを取得できるようにできると思いますが、どうすればよいですか?post_idは、もちろん、「いいね」ボタンがクリックされたときに設計ドキュメントから取得されます。

ありがとう。

4

1 に答える 1

1

groupビューパラメータを調べる必要があります。クエリ文字列パラメータを指定しない場合、デフォルトでは、ビューのコンテンツ全体が縮小されます。申請すると、またはをgroup=true使用して必要な投稿IDを選択することもできます。keystartkey/endkey

また、基本的なreduce操作をより効率的に実行できるreduce関数が組み込まれています。(JavaScriptソースではなくerlangコードでコンパイルされているため)_count全体の代わりに配置するだけreduce.jsです。(あなたもあなたので省略でき1ますemit

于 2011-07-21T13:38:04.350 に答える