2010-03-27 11 views
5

Ich bin ein CouchDB-Neuling und mache die Beispiele im O'Reilly CouchDB Guide.CouchDB Find One funktioniert nicht

Ich habe ein Problem, eine Ansicht mit einem Dokument, das von Schlüssel abzurufen:

curl http://127.0.0.1:5984/basic/_design/example/_view/by_date?key="2009/01/15 15:52:20" 

gibt die Antwort:

curl: (52) Empty reply from server 

aber nur das Abrufen alle Zeilen:

curl http://127.0.0.1:5984/basic/_design/example/_view/by_date 

gibt Ich 3 Reihen einschließlich der spezifischen Reihe, die ich suche:

{"id": "Hallo-Welt", "Schlüssel": "2009/01/15 15:52:20", "Wert": "Hallo Welt"}

warum nicht der Schlüssel Abfragearbeit?

Ich bin mit CouchDB Version 0.10.0 auf Ubuntu 9.10

Antwort

9

CouchDB erwartet die start_key Parameter ein gültiger JSON-kompatibeler Typ, wie "a string" oder 12345 oder ["an", "array", "with", 5.0, "elements"] zu sein. Wenn Sie Ihre CouchDB-Protokolle überprüfen, werden Sie wahrscheinlich einen Eintrag 400 (ungültige Clientanforderung) sehen, da Ihr Schlüssel entweder ungültiges UTF8 oder ungültiges JSON ist.

Sie haben wahrscheinlich zwei Probleme:

  1. Die Shell Ihre Angebote interpretiert, die tatsächlich zu CouchDB gesendet werden müssen. Versuchen Sie einmal, die doppelte Anführungszeichenfolge zu zitieren.

  2. Sie müssen wahrscheinlich auch Ihren Schlüssel verschlüsseln, so dass es eine gültige URL ist. Insbesondere ersetzen Ihren Raum mit %20

alle zusammen das Einlochen, die folgenden Werke für mich auf CouchDB 0.11 auf Ubuntu 9.10.

$ curl http://127.0.0.1:5984/blog/_design/docs/_view/by_date?key='"2009/01/30%2018:04:11"' 
{"total_rows":1,"offset":0,"rows":[ 
{"id":"biking","key":"2009/01/30 18:04:11","value":"Biking"} 
]} 
1

Es funktionierte, ich den Schlüssel-String in einfachen Anführungszeichen und codiert das Leerzeichen so die Anforderung wurde:

/by_date?key='"2009/01/30%2015:52:20"' 
Verwandte Themen