2013-05-26 21 views
12

Mam problem z wyświetleniem widoku couchdb w celu zwrócenia właściwych dokumentów przy użyciu wielu kluczy.Widok zapytania CouchDB z wieloma klawiszami Formatowanie

to działa prawidłowo, wracając do dokumentów, które pasują:

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

To Returns wszystkie dokumenty w widoku, dopasowania czy nie:

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

Zwykle jestem bardzo dobry w szukaniu odpowiedzi. Ale dokumentacja CouchDB jest bardzo jasna w kwestii formatu używania wielu kluczy. Zauważyłem, że niektórzy używają klawiszy? = [123,123] i widziałem też? Keys = "abc", "abc".

Jeśli ktoś może zaoferować jakiekolwiek wyjaśnienie dotyczące "właściwego" formatu i kodowania wielu kluczowych zapytań dla CouchDB przy użyciu metody GET, byłbym bardzo wdzięczny.

Odpowiedz

15

Aby uzyskać wiele kluczy z widoku, należy wykonać żądanie wpisu i przesłać klucze w treści żądania. Żądanie HTTP będzie wyglądać następująco:

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

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

Dziękuję bardzo. To się udało. Sformułowanie dokumentacji CouchDB może być czasami niejednoznaczne. –

4

Nie mówię, że to jest poprawne, ale możesz to zrobić również za pomocą ciągu zapytania. Tablica zamykająca nawiasy nie powinna być zakodowana. Na przykład. to działa na mnie:

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

+1

Nie jest to udokumentowane. Czy można go używać, czy też powinienem wybrać żądanie POST. – albertjan

7

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

iw ciągu zapytania na końcu klucz = [ "key1Value", "key2Value"]

Zauważ, że to jest klucz? = [], nie klucze = [] !!!!!!!!!

Powiązane problemy