2017-06-23 1 views
1

Ich arbeite in einem Projekt mit CouchDBCouchBase lite und Android. Ich möchte eine filter Funktion verwenden, damit ich auf meinem Server Ende tue:Die Verwendung von Filtern auf couchDB funktioniert nicht

{ 
    "_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;}" 
    } 
} 

Auf Android ich tue:

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

aber es funktioniert nicht, wie ich erwarte, und ich bin immer wieder bekommen nur die Masterreplikation, aber niemals die Arbeitsreplikation oder die Arbeitsdatenreplikation.

Irgendeine Idee warum?

Antwort

0

Filterfunktionen werden derzeit nicht unterstützt. Siehe this section in der Couchbase Lite-Dokumentation. (Dies wurde erst vor ein paar Wochen aktualisiert, also entschuldigen Sie bitte, wenn Sie eine ältere Version gesehen haben.)

Sie können auch sehen, this GitHub issue. Sie finden weitere Informationen darüber, warum dies nicht unterstützt wird. Im Wesentlichen beschreiben die CouchDB-Dokumente derzeit nicht, was benötigt wird, um die Kompatibilität zu implementieren.

Verwandte Themen