1

我有一个功能类似于社交网络的 CouchApp。我有一个点赞按钮,当用户单击它时,会创建并保存一个 CouchDB JSON 文档,其中包含字段 post_id(点赞的帖子的 ID)、user_id(点赞帖子的用户的 ID)和类型(值为“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 来自设计文档,当然,当点击“Like”按钮时。

谢谢。

4

1 回答 1

1

您需要group查看视图参数。如果您不提供查询字符串参数,则默认是减少视图的全部内容。申请group=true后,您还可以使用keystartkey/endkey选择您需要的帖子 ID。

此外,还有内置的 reduce 函数可以更有效地执行基本的 reduce 操作。(因为它们是编译的 erlang 代码,而不是 javascript 源代码)只需_count替换整个reduce.js. (你甚至可以去掉1你的emit

于 2011-07-21T13:38:04.350 回答