根据指定here,过滤器可与_changes Feed一起使用,如下所示:
curl "$HOST/db/_changes?filter=app/important"
现在我尝试将此模式与标准视图访问一起使用,如下所示:
curl -X GET $HOST/db/_design/live_data/_view/all-comments&filter=live_data/bytag?tag=testing
我也试过了吗?而不是&:
curl -X GET $HOST/db/_design/live_data/_view/all-comments?filter=live_data/bytag?tag=testing
但过滤器没有效果:显示所有文档,甚至是那些不应由过滤器验证的文档。
我使用的过滤器是:
function(doc, req)
{
for( var i in doc.tags ) {
if(doc.tags[i] == req.query.tag) {
return true;
}
}
return false;
}
_changes
Feed?我没有看到过与“{1}} 答案 0 :(得分:1)
是的,似乎过滤器仅限于_changes请求。 如果要从视图中过滤数据,可以使用“startkey”和“endkey”参数以及可能更复杂的json键和/或降低分组级别来实现所需的结果。
答案 1 :(得分:1)
如果这样做,它将强制CouchDB负责迭代所有 view 的记录并对它们执行过滤器功能。这不是一种好的处理方式,特别是当您可以使用视图和密钥数组(如[date, tag]
)对文档进行预索引时。
但没有什么会禁止你在自己的后端实现这个过滤器。您只需从CouchDB加载所有视图文档,对它们执行过滤器功能并返回。但那不会很快。