Apache CouchDB使用javafx过滤复制



我在javafx上使用CouchBaseLite与Apache CouchDB,特别是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#是Pull replication .

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

概括一下我的问题是

  1. 是否有一种方法来利用使用数组列表或字符串列表作为参数?
  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;
}

    //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"});
如果您还有什么问题,请提出来。

最新更新