2011-04-27 55 views
1

我在Ubuntu 10.04上安装了couchdb 0.10。 我有这样的观点:couchdb视图没有按预期的方式响应

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

我把它通过与指定键= 247参数获得:

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

您可以发布了完整的设计文档?我怀疑你也许可以使设计文档的格式不正确 – 2011-04-27 11:05:01

+0

好的,编辑过,谢谢 – giorrrgio 2011-04-27 11:08:26

+0

任何你无法升级到1.0.2的理由? – 2011-04-27 13:30:28

回答

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 
+0

这是th编号“的响应:” {“total_rows”:4,“offset”:3,“rows”:[ {“id”:“1357b381d8c22aa193f42de54e400d16”,“key”:“247”,“value” “:”1357b381d8c22aa193f42de54e400d16“,”time“:1303895611.37,”user_id“:”1“}} ]} 它是正确的吗? – giorrrgio 2011-04-27 11:12:38

+0

是的!如果您看起来与您引用的文档具有相同的标识。 – 2011-04-27 11:14:51

+1

如果这是您使用的解决方案,请您将答案标记为“已接受”?谢谢! – 2011-05-01 10:59:43