2010-03-27 12 views
5

Jestem nowicjuszem na kanapie i robię przykłady w przewodniku O'Reilly CouchDB.CouchDB Find One nie działa

mam problem przy użyciu widoku aby pobrać dokument według klucza:

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

daje odpowiedź:

curl: (52) Empty reply from server 

ale tylko odczytująca wszystkie wiersze:

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

daje ja 3 wiersze, w tym konkretny wiersz, którego szukam:

{"id": "hello-world", "key": "2009/01/15 15:52:20", "value": "Hello World"}

dlaczego nie klucz praca z zapytaniem?

Używam couchdb wersji 0.10.0 w Ubuntu 9.10

Odpowiedz

9

couchdb oczekuje parametr start_key być ważny rodzaj JSON-kompatybilne, takich jak "a string" lub 12345 lub ["an", "array", "with", 5.0, "elements"]. Jeśli sprawdzisz dzienniki CouchDB, prawdopodobnie zobaczysz wpis 400 (nieprawidłowe żądanie klienta), ponieważ klucz jest nieprawidłowy lub nieprawidłowy kod JSON.

Prawdopodobnie masz dwa problemy:

  1. Powłoka interpretuje swoje cytaty, które muszą być faktycznie przekazana do CouchDB. Spróbuj użyć pojedynczego cudzysłowu w ciągu znaków podwójnego cudzysłowu.

  2. Prawdopodobnie trzeba również zakodować klucz, aby był prawidłowym adresem URL. Konkretnie zastąpić przestrzeń %20

Wyrażając to wszystko razem, następujące prace dla mnie na CouchDB 0,11 na 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

Udało się, mam jedno-cytowany kluczową ciąg i zakodowany znak spacji więc wniosek został:

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