CouchDB - 地图功能中的变量

时间:2012-07-09 15:35:40

标签: javascript couchdb

我对CouchDB很新,并且有一个非常基本的问题:

是否有可能将变量从客户端传递到map函数,例如:

function (doc, params) {
    if (doc.property > params.property) emit(doc, null);
}

感谢您的帮助, 基督教

2 个答案:

答案 0 :(得分:2)

不,映射函数应该创建始终采用相同输入并产生相同输出的索引,以便它们可以保持增量。 (并且快速)

如果您需要对视图的结果进行某种过滤,请考虑使用_list函数,因为它可以使用客户端提供的查询字符串变量并在转换中使用它们。

答案 1 :(得分:2)

虽然Dominic的回答是正确的,但实际问题中的示例可能会被实现为具有适当密钥的映射函数和包含startkey的查询。因此,如果您想要在示例中显示的功能,则应将视图更改为:

function(doc) {
  if( doc.property )
    emit( doc.property, null);
}

然后您的查询将成为:

/db_name/_design/view_doc/_view/view_name?startkey="property_param"&include_docs=true

哪个会为您提供您的示例所示的内容。

这是使用CouchDB的关键(双关语很有趣):创建视图,允许您使用keykeys或{的某种组合,根据键选择视图的子集{1}}和/或startkey