Apache CouchDB 使用 javafx 过滤复制

Apache CouchDB Filtered replication with javafx

我在带有 Apache CouchDB 的 javafx 上使用 CouchBaseLite,特别是 FUTON 接口。我目前有一个过滤功能,

{"orgId": 
"function(docu, req) {
    if(docu.orgId == req.query.orgId && docu.doc == req.query.doc)
        return true;
    else
        return false;
 }"}

我目前正在设置过滤器,

Map<String, Object> params = new HashMap<>();
Map<String, Object> params2 = new HashMap<>();
Map<String, Object> params3 = new HashMap<>();
Map<String, Object> params4 = new HashMap<>();

params.put("orgId", 0);
params.put("doc", "doc1");
params2.put("orgId", 0);
params2.put("doc", "doc2");
params3.put("orgId", 0);
params3.put("doc", "doc3");
params4.put("orgId", 0);
params4.put("doc", "doc4");

pullDoc1.setFilterParams(params);
pullDoc2.setFilterParams(params2);
pullDoc3.setFilterParams(params3);
pullDoc4.setFilterParams(params4);

pullDoc1.start();
pullDoc2.start();
pullDoc3.start();
pullDoc4.start();

其中 doc# 是文档类型。和 pullDoc# 是拉取复制。

我想知道是否有一种方法可以利用 ArrayList 或字符串列表作为参数,而不是为每种文档类型进行 4 个单独的拉取复制。

所以回顾一下我的问题是

  1. 有没有办法利用 ArrayList 或字符串列表作为参数?
  2. 我的过滤函数 javascript 会是什么样子?
  3. 我的 javafx 代码会是什么样子?

谢谢。

如您所述,我更新了您的代码,以便您可以使用具有多个文档值的过滤器函数。

过滤函数

function(docu, req) {
    if (docu.orgId == req.query.orgId && docu.doc != null && req.query.docs.indexOf(docu.doc) > -1)
        return true;
    else
        return false;
}

Java 参数代码

    //We create our param associated array
    Map<String, Object> params = new HashMap<>();
    //Here can pu the orgId. This is a single value
    params.put("orgId", 0); 

    //Here we send an array of doc that we want to get.
    params.put("docs", new String[]{"doc1", "doc2", "doc3", "doc4"});

如有其他问题,欢迎随时提问。