复制筛选器中的CouchDB查询参数是否可以接受数组?
在CouchDB中,当参数是字符串时,复制过滤器工作得很好。但是,我想知道是否可以改为发送数组。例如,我现有的工作筛选器接受查询参数user,并可以使用类似“tony”的值填充。但是,我希望能够检查多个用户,以便查询参数看起来像复制筛选器中的CouchDB查询参数是否可以接受数组?,couchdb,database-replication,Couchdb,Database Replication,在CouchDB中,当参数是字符串时,复制过滤器工作得很好。但是,我想知道是否可以改为发送数组。例如,我现有的工作筛选器接受查询参数user,并可以使用类似“tony”的值填充。但是,我希望能够检查多个用户,以便查询参数看起来像 { "users": [ "laura", "tony" ] } 我在curl中尝试了这个方法,得到了{“error”:“bad_request”,“reason”:“invalid_json”}。我不确定无效的JSON在哪里
{
"users": [
"laura",
"tony"
]
}
我在curl中尝试了这个方法,得到了{“error”:“bad_request”,“reason”:“invalid_json”}
。我不确定无效的JSON在哪里
通过curl的请求如下所示:
curl -H 'Content-Type: application/json' \
-X POST http://example.com:5984/_replicate \
-d '{"source":"http://example.com:5984/db1","target":"http://example.com:5984/db2", "filter":"repfilter/users", "query_params":{"users":["laura","tony"]}'
在筛选代码中,我从查询参数检查users
数组中是否存在文档字段userID
"users": "function(doc,req){ if(req.query.users.indexOf(doc.userID) >= 0){return true;} return false; }"
这在沙发上是不可能的还是我做错了什么?我应该使用逗号分隔的字符串吗?我认为实现数组的最佳方法是执行以下操作:
?users="laura"&users="tony"
我不是100%肯定erlang是如何解析这种类型的查询字符串的,因此如果这样做失败,逗号分隔的列表可能会更简单:
?users="laura,tony"
只需在fn中添加以下内容:
var users = req.query.users.split(',');