2013-05-26 12 views
12

Ich habe ein Problem, eine couchdb Ansicht immer die richtigen Dokumente zurückzugeben, wenn mehrere Tasten.CouchDB Query View mit mehreren Schlüsseln Formatierung

Das funktioniert, fein die Dokumente Rückkehr zu folgenden Kriterien:

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

Dies gibt alle Dokumente in der Ansicht, passend oder nicht:

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

ich bin in der Regel sehr gut auf der Jagd meine Antworten nieder. Aber CouchDB Dokumentation ist sehr klar im Format für die Verwendung mehrerer Schlüssel. Ich habe einige die? Tasten = verwenden gesehen [123,123] und ich habe auch gesehen? Tasten = „abc“, „abc“.

Wenn jemand eine Klärung über das 'richtige' Format und die Codierung von mehreren Schlüsselabfragen für CouchDB mit einer GET Methode anbieten kann, wäre ich sehr dankbar.

Antwort

15

Um mehrere Schlüssel aus einer Ansicht zu erhalten, müssen Sie eine Post-Anforderung tun, und die Schlüssel im Anforderungstext einreichen. Ihre HTTP-Anfrage sieht dann so aus:

+1

Danke Ihnen so sehr. Das hat funktioniert. Der Wortlaut der CouchDB-Dokumentation kann manchmal mehrdeutig sein. –

4

Nicht sagen, es ist richtig, aber Sie können es tatsächlich auch über Query String tun. Das Array, das Klammern enthält, sollte nicht codiert sein. Z.B. Dies funktioniert für mich:

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

+1

Es ist nicht dokumentiert. Ist es in Ordnung, es zu verwenden oder sollte ich mich für die POST-Anfrage entscheiden. – albertjan

7

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

und in dem Query-String am Ende key = [ "key1Value", "key2Value"]

Beachten Sie, dass es ist der Schlüssel? = [], nicht keys = [] !!!!!!!!!

Verwandte Themen