Couchdb 在CouchApp视图中将参数传递给map.js
我有一个像社交网络一样运作的CouchApp。我有一个like按钮,当用户单击它时,它会创建并保存一个CouchDB JSON文档,其中包含post_id(喜欢的帖子的id)、user_id(喜欢帖子的用户的id)和type(值为“like”,表示文档是like) 除了这篇文章,我想指出它收到的喜欢的数量。我的映射函数如下所示:Couchdb 在CouchApp视图中将参数传递给map.js,couchdb,mapreduce,couchapp,Couchdb,Mapreduce,Couchapp,我有一个像社交网络一样运作的CouchApp。我有一个like按钮,当用户单击它时,它会创建并保存一个CouchDB JSON文档,其中包含post_id(喜欢的帖子的id)、user_id(喜欢帖子的用户的id)和type(值为“like”,表示文档是like) 除了这篇文章,我想指出它收到的喜欢的数量。我的映射函数如下所示: function(doc) { if (doc.type && doc.type == 'like') { emit(doc.post_id
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中只检索喜欢的内容,但是我该怎么做呢?当然,当单击“Like”按钮时,post_id来自设计文档
谢谢。您需要查看视图参数。如果未提供querystring参数,默认设置是减少视图的全部内容。应用group=true
后,还可以使用key
或startkey/endkey
选择所需的帖子id
此外,还有一些方法可以更有效地执行基本的reduce操作。(因为它们是编译的erlang代码,而不是javascript源代码)只需将\u count
放在整个reduce.js
的位置。(您甚至可以在emit
中取消1
)您需要查看视图参数。如果未提供querystring参数,默认设置是减少视图的全部内容。应用group=true
后,还可以使用key
或startkey/endkey
选择所需的帖子id
此外,还有一些方法可以更有效地执行基本的reduce操作。(因为它们是编译的erlang代码,而不是javascript源代码)只需将
\u count
放在整个reduce.js
的位置。(你甚至可以在你的emit
中去掉1
)好吧,我刚刚意识到我的目标有问题。我真的应该创建另一个文档,作为一个特定帖子的喜欢者和喜欢者的计数器。有时候CouchDB最困难的事情是当您来自像MySQL这样的关系数据库时。你应该首先改变你的想法。好吧,我刚刚意识到我的目标有问题。我真的应该创建另一个文档,作为一个特定帖子的喜欢者和喜欢者的计数器。有时候CouchDB最困难的事情是当您来自像MySQL这样的关系数据库时。你真的应该首先改变你的想法。