3

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

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

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

谢谢你的帮助,克里斯蒂安

4

2 回答 2

2

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

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

于 2012-07-09T16:16:12.930 回答
2

虽然 Dominic 的回答是正确的,但实际问题中的示例可能可以实现为具有适当键的 map 函数和包含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 的关键(双关语很有趣):创建视图,允许您根据键选择视图的子集,使用或key和/或keys的某种组合startkeyendkey

于 2012-07-09T23:33:38.280 回答