2012-07-09 48 views
3

我很新的CouchDB的,有一个非常基本的问题:CouchDB的 - 变量的map函数

是否有可能到来自客户端的变量传递到地图的功能,如:

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

感谢您的帮助, Christian

回答

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的工作:创建视图,让您可以根据使用键选择视图的子集要么keykeysstartkey和/或endkey

+0

一些组合谢谢,用查询参数得到了那个东西。不过:couchDB究竟如何比较它是地图的关键字 - 结果与startkey resp。 endkey? – cschwarz 2012-07-10 09:28:24

+0

好的电话,我想我挂在了“变量从客户端”部分的问题:) – 2012-07-10 13:58:17

+0

我不是100%确定你在问什么,所以让我指出你在文档中的两个地方:[查询选项](http://wiki.apache.org/couchdb/HTTP_view_API?action=show&redirect=HttpViewApi#Querying_Options)和[查看整理信息](http://wiki.apache.org/couchdb/View_collat​​ion) – smathy 2012-07-10 17:00:33

2

不,地图函数应该创建索引,它们始终采用相同的输入并生成相同的输出,以便它们可以保持增量。 (和快)

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