我在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}"
}
}
}
我错过了什么吗?
答案 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