我是一名couchDB新手,我正在O'Reilly CouchDB指南中做例子。
使用视图按键检索文档时出现问题:
curl http://127.0.0.1:5984/basic/_design/example/_view/by_date?key="2009/01/15 15:52:20"
给出回复:
curl: (52) Empty reply from server
但只是检索所有行:
curl http://127.0.0.1:5984/basic/_design/example/_view/by_date
给了我3行,包括我正在寻找的特定行:
{“id”:“hello-world”,“key”:“2009/01/15 15:52:20”,“value”:“Hello World”}
为什么关键查询不起作用?
我在Ubuntu 9.10上使用CouchDB版本0.10.0
答案 0 :(得分:9)
CouchDB期望start_key
参数是有效的JSON兼容类型,例如"a string"
或12345
或["an", "array", "with", 5.0, "elements"]
。如果您检查CouchDB日志,您可能会看到400
(错误的客户端请求)条目,因为您的密钥是无效的UTF8或无效的JSON。
你可能有两个问题:
shell正在解释必须实际发送到CouchDB的引号。尝试单引号引用双引号字符串。
您可能还需要对密钥进行编码,以使其成为有效的URL。具体而言,请使用%20
总而言之,以下内容适用于Ubuntu 9.10上的CouchDB 0.11。
$ 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 :(得分:1)
它工作正常,我单引用了密钥字符串并对空格字符进行了编码,因此请求变为:
/by_date?key='"2009/01/30%2015:52:20"'