在 couchDB 上使用过滤器不起作用

Using filters on couchDB does not work

我正在使用 CouchDB CouchBase liteAndroid 的项目中工作。 我想使用 filter 函数,所以我在服务器端做 :

   {
   "_id": "_design/filters",
   "_rev": "xxxxxxxxxxxxxxxx",
   "filters": {
       "master": "function(doc, req) { if(true==doc.ismaster) { return true; } else { return false; }}",
       "work": "function(doc, req) { if(true!=doc.ismaster) { return true; } else { return false; }}",
       "workdata": "function(doc, req){if (true==doc.ismaster){return false;}if (req.query.device_num==doc.device_num){return true;}if (doc.type=='field_order'){return true;}if (req.query.device_num=='20' || req.query.device_num=='21' || req.query.device_num=='22' || req.query.device_num=='23'){return true;}return false;}"
   }
}

Android 我正在做 :

 pullwork = work.createPullReplication(url);
        pullwork.setAuthenticator(auth);
        if (PreferenceManager.getTabletNumber() > 80 && PreferenceManager.getTabletNumber() < 90) {
            pullwork.setFilter("filters/work");  
        }else {
            pullwork.setFilter("filters/workdata");

但它并没有像我预期的那样工作,我总是只得到主复制,而不是工作复制或工作数据复制。

知道为什么吗?

目前不支持过滤功能。请参阅 Couchbase Lite 文档中的 this section。 (这是几周前才更新的,如果您看到旧版本,我们深表歉意。)

您可能还想看看 this GitHub issue。您可以找到有关不支持它的原因的更多详细信息。从本质上讲,现在 CouchDB 文档没有充分描述实现兼容性所需的条件。