我有一个像社交网络一样运作的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来自设计文档。
感谢。
答案 0 :(得分:1)
您需要查看group
视图参数。如果未提供查询字符串参数,则默认为减少视图的全部内容。应用group=true
后,您还可以使用key
或startkey/endkey
来挑选您需要的帖子ID。
此外,built-in reduce functions可以更有效地执行基本的缩减操作。 (因为它们是编译的erlang代码,而不是javascript源代码)只需将_count
代替整个reduce.js
。 (您甚至可以在1
)
emit