2013-05-26 6 views
12

Ho riscontrato un problema con la visualizzazione couchdb per restituire i documenti corretti quando si utilizzano più chiavi.Visualizzazione query CouchD con formattazione di più tasti

Questo funziona bene, restituendo i documenti che corrispondono a:

GET http://example.com:5984/myDb/_design/myFilters/_view/getItemByForeignKeyId?key=abc123

Ciò restituisce restituisce tutti i documenti nella vista, corrispondenza o no:

GET http://example.com:5984/myDb/_design/myFilters/_view/getItemByForeignKeyId?keys=%5B%22abc123%22%5D

Di solito sono molto bravo a dare una risposta alle mie risposte. Ma la documentazione di CouchDB è molto chiara sul formato per l'utilizzo di più chiavi. Ho visto alcuni usare i tasti? = [123,123] e ho anche visto? Keys = "abc", "abc".

Se qualcuno può offrire qualche chiarimento sul formato "corretto" e sulla codifica di più domande chiave per CouchDB utilizzando un metodo GET, sarei estremamente riconoscente.

risposta

15

Per ottenere più chiavi da una vista, è necessario eseguire una richiesta di posta e inviare le chiavi nel corpo della richiesta. La tua richiesta HTTP sarà simile a questa:

POST /myDb/_design/myFilters/_view/getItemByForeignKeyId 
Content-Type: application/json 

{ 
    "keys" : [ 
     "abc", 
     "123" 
    ] 
} 
+1

Grazie mille. Ha funzionato. La formulazione della documentazione di CouchDB può essere ambigua a volte. –

4

Non dicendo che è corretto, ma puoi farlo anche tramite stringa di query. La matrice che racchiude le parentesi non dovrebbe essere codificata. Per esempio. questo funziona per me:

http://localhost:5984/test/_design/artists_albums/_view/albums_by_artist?keys=[%22Super%20bad%20artist%22,%20%22Fake%20artist%201%22]

+1

Non è documentato. Va bene usarlo o dovrei optare per la richiesta POST. – albertjan

7

function(doc){ { if([doc.key1, doc.key2]) emit([doc.key1, doc.thingYouWantToKnow]); } }

e nella stringa di query, alla fine key = [ "key1Value", "key2Value"]

Si noti che è la chiave? = [], non keys = [] !!!!!!!!!

Problemi correlati