我有一个像社交网络一样的CouchApp。我有一个喜欢按钮,当用户点击它时,创建并保存一个CouchDB JSON文档,其中包含字段post_id(被喜欢的帖子的ID)、user_id(喜欢该帖子的用户的ID)和type(值为"喜欢",表明该文档是喜欢的)。
在帖子旁边,我想指出它收到了多少个赞。我的map函数是这样的:
function(doc) {
if (doc.type && doc.type == 'like') {
emit(doc.post_id, 1);
}
}
和my reduce, this:
function(post_ids, likes) {
return sum(likes);
}
我的问题是,这个函数返回所有喜欢在网站上的所有帖子的总和。我认为我的reduce。js很好,也许我可以调整我的map.js接受一个post_id参数,这样我就可以从那个post_id检索点赞,但我怎么做呢?post_id来自设计文档,当然,当点击"Like"按钮时。
谢谢。
您需要查看group
视图参数。如果不提供querystring参数,则默认是减少视图的整个内容。一旦您应用了group=true
,您也可以使用key
或startkey/endkey
来挑选您需要的post id。
还有内置的reduce函数,可以更有效地执行基本的reduce操作。(因为它们是编译的erlang代码,而不是javascript源代码)只要把_count
放在你的整个reduce.js
的地方。(你甚至可以在你的emit
中去掉1
)