2010-03-27 11 views
5

Soy un novato de couchDB y estoy haciendo los ejemplos en la guía O'Reilly CouchDB.CouchDB Find One no funciona

Tengo un problema con el fin de recuperar un documento con la tecla:

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

da la respuesta:

curl: (52) Empty reply from server 

pero sólo recuperar todas las filas:

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

da me 3 filas incluyendo la fila específica que estoy buscando:

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

por qué la tecla no trabajo de consulta?

estoy usando CouchDB versión 0.10.0 en Ubuntu 9.10

Respuesta

9

CouchDB espera que el parámetro start_key a ser un tipo compatible con JSON válido, como "a string" o 12345 o ["an", "array", "with", 5.0, "elements"]. Si revisa sus registros de CouchDB, probablemente verá una entrada 400 (solicitud de cliente incorrecta) porque su clave es UTF8 no válida o JSON no válida.

es probable que haya dos problemas:

  1. La cáscara es la interpretación de sus cotizaciones que en realidad deben ser enviadas a CouchDB. Pruebe con una sola cita de su cadena de comillas dobles.

  2. Probablemente también necesite codificar su clave para que sea una URL válida. En concreto, reemplazar su espacio con %20

Poniendo todo esto junto, las siguientes obras para mí en CouchDB 0.11 en 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

Funcionó, yo solo cité la cadena de clave y se codifica el carácter de espacio lo que la solicitud se hizo:

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