2017-06-23 3 views
1

Je travaille dans un projet en utilisant CouchDBCouchBase lite et Android. Je veux utiliser une fonction filter donc je suis sur mon côté serveur:L'utilisation de filtres sur couchDB ne fonctionne pas

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

Sur Android que je fais:

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

Mais cela ne fonctionne pas comme je l'espère et je suis toujours reçois juste la réplication maîtresse mais jamais la réplication de travail ou la réplication de workdata.

Une idée sur pourquoi?

Répondre

0

Les fonctions de filtre ne sont actuellement pas prises en charge. Voir this section dans les documents Couchbase Lite. (Cela a été mis à jour il ya seulement quelques semaines, donc excuses si vous avez vu une version plus ancienne.)

Vous pouvez également regarder this GitHub issue. Vous pouvez trouver plus de détails sur pourquoi il n'est pas supporté. Essentiellement, en ce moment, les docs de CouchDB ne décrivent pas suffisamment ce qui est nécessaire pour implémenter la compatibilité.