【问题标题】:CouchDB Find One not workingCouchDB Find One 不工作
【发布时间】:2011-02-01 13:48:01
【问题描述】:

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

【问题讨论】:

    标签: couchdb


    【解决方案1】:

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

    你可能有两个问题:

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

    2. 您可能还需要对密钥进行编码,使其成为有效的 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"}
    ]}
    

    【讨论】:

      【解决方案2】:

      成功了,我用单引号引用了密钥字符串并对空格字符进行了编码,因此请求变为:

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

      【讨论】:

        猜你喜欢
        • 2016-01-14
        • 2012-08-07
        • 1970-01-01
        • 1970-01-01
        • 2016-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多