2011-04-27 67 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

相關問題