2017-03-13 1 views
0
filtrée android

ma base de données a beaucoup de documents, et chaque document a un champ appelé DOC_TYPE, donc je peux filtrer, mais Android donne une erreur en essayant de filtrer:Cloudant synchronisation traction

Map<String, String> parameters = new HashMap<String, String>(); 
     parameters.put("doc_type", "doc_company"); 
     PullFilter filter = new PullFilter("company/list", parameters); 
     Replicator replicator = ReplicatorBuilder.pull() 
       .from(uri).to(ds) 
       .filter(filter) 
       .build(); 

la erreur:

 CouchException: error: Unknown error, reason: Unknown reason, statusCode: 404, msg: Object Not Found, cause: java.io.FileNotFoundException: https://(my_user_here).cloudant.com:443/db_404040/_changes?style=all_docs&feed=normal&filter=company/filter&doc_type=doc_company&limit=1000 
at com.cloudant.sync.internal.mazha.CouchClient$ExecuteResult.<init>(CouchClient.java:112) 
at com.cloudant.sync.internal.mazha.CouchClient$ExecuteResult.<init>(CouchClient.java:85) 
at com.cloudant.sync.internal.mazha.CouchClient.execute(CouchClient.java:188) 
at com.cloudant.sync.internal.mazha.CouchClient.access$100(CouchClient.java:54) 
at com.cloudant.sync.internal.mazha.CouchClient$1.call(CouchClient.java:245) 
at com.cloudant.sync.internal.mazha.CouchClient$1.call(CouchClient.java:242) 
at com.cloudant.sync.internal.mazha.CouchClient.executeToInputStreamWithRetry(CouchClient.java:209) 
at com.cloudant.sync.internal.mazha.CouchClient.executeToInputStreamWithRetry(CouchClient.java:242) 
at com.cloudant.sync.internal.mazha.CouchClient.executeToJsonObjectWithRetry(CouchClient.java:227) 
at com.cloudant.sync.internal.mazha.CouchClient.changes(CouchClient.java:301) 
at com.cloudant.sync.internal.mazha.CouchClient.changes(CouchClient.java:295) 
at com.cloudant.sync.internal.replication.CouchClientWrapper.changes(CouchClientWrapper.java:125) 
at com.cloudant.sync.internal.replication.PullStrategy.nextBatch(PullStrategy.java:451) 
at com.cloudant.sync.internal.replication.PullStrategy.replicate(PullStrategy.java:235) 
at com.cloudant.sync.internal.replication.PullStrategy.run(PullStrategy.java:177) 
at java.lang.Thread.run(Thread.java:761) 
       Caused by: java.io.FileNotFoundException: https://(my_user_here).cloudant.com:443/db_404040/_changes?style=all_docs&feed=normal&filter=company/filter&doc_type=doc_company&limit=1000 
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250) 
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java) 
at com.cloudant.http.HttpConnection.responseAsInputStream(HttpConnection.java:420) 
at com.cloudant.sync.internal.mazha.CouchClient.execute(CouchClient.java:171) 
at com.cloudant.sync.internal.mazha.CouchClient.access$100(CouchClient.java:54)  
at com.cloudant.sync.internal.mazha.CouchClient$1.call(CouchClient.java:245)  
at com.cloudant.sync.internal.mazha.CouchClient$1.call(CouchClient.java:242)  
at com.cloudant.sync.internal.mazha.CouchClient.executeToInputStreamWithRetry(CouchClient.java:209)  
at com.cloudant.sync.internal.mazha.CouchClient.executeToInputStreamWithRetry(CouchClient.java:242)  
at com.cloudant.sync.internal.mazha.CouchClient.executeToJsonObjectWithRetry(CouchClient.java:227)  
at com.cloudant.sync.internal.mazha.CouchClient.changes(CouchClient.java:301)  
at com.cloudant.sync.internal.mazha.CouchClient.changes(CouchClient.java:295)  
at com.cloudant.sync.internal.replication.CouchClientWrapper.changes(CouchClientWrapper.java:125)  
at com.cloudant.sync.internal.replication.PullStrategy.nextBatch(PullStrategy.java:451)  
at com.cloudant.sync.internal.replication.PullStrategy.replicate(PullStrategy.java:235)  
at com.cloudant.sync.internal.replication.PullStrategy.run(PullStrategy.java:177)  
at java.lang.Thread.run(Thread.java:761)  

j'ai le document avec la fonction de filtre:

{ 
    "_id": "_design/company", 
    "_rev": "15-49d2081b2e3c35ae833617fd2356e6d3", 
    "views": { 
    "list": { 
     "map": "function (doc) {\n emit(doc);\n}" 
    }, 
    "filter": { 
     "map": "function (doc, req) {\n emit(doc._id, 1);\n}" 
    } 
    }, 
    "language": "javascript" 
} 

quand je avoir accès à

https://(my_user_here).cloudant.com:443/db_404040/_changes?style=all_docs&feed=normal&filter=company/filter&doc_type=doc_company&limit=1000

il me donne ce message:

{"error":"not_found","reason":"missing json key: filters"} 

ce qui est erroné? je l'ai fait exactement ce que la documentation dit https://github.com/cloudant/sync-android/blob/master/doc/replication.md (à la fin)

+0

peut-être que j'ai eu la réponse, après 5 heures creusant l'Internet, j'ai trouvé -> https://groups.google.com/forum/#!topic/mobile-couchbase/tw5462qMFeM va essayer et éditez ici plus tard –

Répondre

0

i trouvé -> groups.google.com/forum/#!topic/mobile-couchbase/tw5462qMFeM

i retiré le document de la base de données _replicator cloudant (en ligne) et il a commencé à travailler