在 CouchApp 视图中将参数传递给 map.js
Posted
技术标签:
【中文标题】在 CouchApp 视图中将参数传递给 map.js【英文标题】:Passing an argument to map.js in a CouchApp view 【发布时间】:2011-07-21 10:19:00 【问题描述】:我有一个功能类似于社交网络的 CouchApp。我有一个点赞按钮,当用户单击它时,它会创建并保存一个 CouchDB JSON 文档,其中包含字段 post_id(点赞的帖子的 ID)、user_id(点赞帖子的用户的 ID)和类型(值为“like”,表示该文档是一个like)。
除了帖子之外,我还想说明它收到的点赞数。我的地图功能如下所示:
function(doc)
if (doc.type && doc.type == 'like')
emit(doc.post_id, 1);
还有我的reduce,这个:
function(post_ids, likes)
return sum(likes);
我的问题是,此函数返回站点中所有帖子中所有喜欢的总和。我在想我的 reduce.js 很好,也许我可以调整我的 map.js 以接受 post_id 参数,这样我就可以只从那个 post_id 中检索喜欢,但我该怎么做呢? post_id 来自设计文档,当然是点击“Like”按钮的时候。
谢谢。
【问题讨论】:
好的,我刚刚意识到我的目标有问题。我真的应该创建另一个文档,作为特定帖子的点赞数和点赞数的计数器。有时,CouchDB 最困难的事情是当您来自 mysql 等关系数据库时。你真的应该首先改变你的思维框架。 【参考方案1】:您需要查看group
视图参数。如果不提供查询字符串参数,则默认是减少视图的全部内容。一旦你申请了group=true
,你也可以使用key
或startkey/endkey
来挑选你需要的帖子ID。
另外,built-in reduce functions 可以更有效地执行基本的 reduce 操作。 (因为它们是编译的 erlang 代码,而不是 javascript 源代码)只需将 _count
代替整个 reduce.js
。 (你甚至可以在你的emit
中去掉1
)
【讨论】:
以上是关于在 CouchApp 视图中将参数传递给 map.js的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PHP 中将单个附加参数传递给 array_map 回调?
如何在 addTarget #Selector 中将静态参数传递给 UIRefreshControl() 的本地函数
在 Eclipse(Pydev) 中将命令行参数传递给 Python 脚本