couchdb视图没有按预期响应

时间:2011-04-27 11:01:52

标签: nosql couchdb

我在Ubuntu 10.04上安装了couchdb 0.10。 我有这个观点:

function(doc) {
  if (doc.type == "transaction") {
    emit(doc.invoice_id, {id: doc._id, time: doc.time, user_id:doc.user_id});
  }
}

我通过指定key = 247参数的get来调用它:

    http://127.0.0.1:5984/test/_design/sfCouch/_view/find_by_invoice_id?key=247

在db中,我有一个匹配invoice_id = 247的文档:

{
   "_id": "1357b381d8c22aa193f42de54e400d16",
   "_rev": "2-778ea588fa449851bbab6cfa9fa91bfa",
   "type": "transaction",
   "user_id": "1",
   "invoice_id": "247",
   "time": 1303895611.37
}

但视图中没有返回任何行:

{"total_rows":4,"offset":1,"rows":[]}

这是我的设计文件:

{
   "_id": "_design/sfCouch",
   "_rev": "11-95c82a9d562b3aa1470a02de943f49db",
   "language": "javascript",
   "views": {
       "find_by_invoice_id": {
           "map": "function(doc) {\u000d\u000a  if (doc.type == \"transaction\") {\u000d\u000a    emit(doc.invoice_id, {id: doc._id, time: doc.time, user_id:doc.user_id});\u000d\u000a  }\u000d\u000a}"
       }
   }
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

由于键invoice_id是一个字符串,您需要将键指定为JSON编码的字符串。

尝试:

http://127.0.0.1:5984/test/_design/sfCouch/_view/find_by_invoice_id?key=%22247%22

(%22是URL编码的“标志”

如果失败也可以发布:

的输出
http://127.0.0.1:5984/test/_design/sfCouch/_view/find_by_invoice_id