CouchDB Find One无法正常工作

时间:2010-03-27 17:06:34

标签: couchdb

我是一名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

2 个答案:

答案 0 :(得分:9)

CouchDB期望start_key参数是有效的JSON兼容类型,例如"a string"12345["an", "array", "with", 5.0, "elements"]。如果您检查CouchDB日志,您可能会看到400(错误的客户端请求)条目,因为您的密钥是无效的UTF8或无效的JSON。

你可能有两个问题:

  1. shell正在解释必须实际发送到CouchDB的引号。尝试单引号引用双引号字符串。

  2. 您可能还需要对密钥进行编码,以使其成为有效的URL。具体而言,请使用%20

  3. 替换您的空间

    总而言之,以下内容适用于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"'