复制筛选器中的CouchDB查询参数是否可以接受数组?

复制筛选器中的CouchDB查询参数是否可以接受数组?,couchdb,database-replication,Couchdb,Database Replication,在CouchDB中,当参数是字符串时,复制过滤器工作得很好。但是,我想知道是否可以改为发送数组。例如,我现有的工作筛选器接受查询参数user,并可以使用类似“tony”的值填充。但是,我希望能够检查多个用户,以便查询参数看起来像 { "users": [ "laura", "tony" ] } 我在curl中尝试了这个方法,得到了{“error”:“bad_request”,“reason”:“invalid_json”}。我不确定无效的JSON在哪里

在CouchDB中,当参数是字符串时,复制过滤器工作得很好。但是,我想知道是否可以改为发送数组。例如,我现有的工作筛选器接受查询参数user,并可以使用类似“tony”的值填充。但是,我希望能够检查多个用户,以便查询参数看起来像

{
   "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(',');