在 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,你也可以使用keystartkey/endkey来挑选你需要的帖子ID。

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

【讨论】:

以上是关于在 CouchApp 视图中将参数传递给 map.js的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中将单个附加参数传递给 array_map 回调?

在 Swift 中将参数传递给选择器

如何在 addTarget #Selector 中将静态参数传递给 UIRefreshControl() 的本地函数

在 Eclipse(Pydev) 中将命令行参数传递给 Python 脚本

jetpack compose 将参数传递给 viewModel

如何在 Delphi 2010 中将参数传递给 flash 电影?