是否可以在视图中访问请求查询字符串参数?
考虑此请求... GET/database/_designs/foo/?bar=1
这张地图......
views {
foo: {
map: function (document)
{
// I want to access querystring parameter "bar" here! But how?
// I'd like to be able to do something along the lines of...
if (bar > 0) emit(null, document);
}
}
}
答案 0 :(得分:14)
来自http://sitr.us/2009/06/30/database-queries-the-couchdb-way.html:
CouchDB设计让你变得更棒 大数据集的性能。但它 意味着你不能通过动态 地图函数的参数何时 你运行一个查询。你不能要求它 仅发出给定的用户记录 姓氏除非你想维持 针对该特定的特殊观点 姓。在大多数情况下,它不是 实际建立单独的视图 您可能想要运行的每个查询 有一天。所以你能做的就是跑步 针对一般目的的查询 查看上方并仅请求键/值 与特定键匹配的对。
function find_users_by_last_name(db, last_name) {
var matches;
matches = db.view('users/last_names', { key: last_name });
return matches.rows.map(dot('value'));
}
所以,不,但您可以查看视图。
答案 1 :(得分:4)
视图是预先计算的,因此无法获取计算参数。然后,可用于查询视图的唯一参数是仅检索其子集的键或范围。所以你可以做的就是使用list function对视图做更多的事情。很难说不知道你想要达到的目标。如果你想在CouchDB中进行真正的动态查询,你可以使用临时视图,但它可能会很慢,因为数据库中的所有文档都会被传递给它。