在CouchApp视图中将参数传递给map.js

时间:2011-07-21 10:19:00

标签: couchdb mapreduce couchapp

我有一个像社交网络一样运作的CouchApp。我有一个类似的按钮,当用户点击时,会创建并保存一个CouchDB JSON文档,其中包含字段post_id(喜欢的帖子的ID),user_id(喜欢帖子的用户的ID)和类型(值为“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来自设计文档。

感谢。

1 个答案:

答案 0 :(得分:1)

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

此外,built-in reduce functions可以更有效地执行基本的缩减操作。 (因为它们是编译的erlang代码,而不是javascript源代码)只需将_count代替整个reduce.js。 (您甚至可以在1

中取消emit