CouchDB - 在视图中访问查询字符串参数

时间:2011-04-07 15:09:36

标签: couchdb

是否可以在视图中访问请求查询字符串参数?

考虑此请求... 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);
        }
    }
}

2 个答案:

答案 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中进行真正的动态查询,你可以使用临时视图,但它可能会很慢,因为数据库中的所有文档都会被传递给它。