2013-03-22 46 views
0

我認爲這是一個couchrest的問題,但似乎是一個更深的內部Ruby問題。用下面的CouchDB視圖鍵/值:couchrest/open-uri返回空行的鍵在couchdb視圖

... 
{"key":["Document-2458","MethodID","286"],"value":1}, 
{"key":["Document-2458","MethodID","287"],"value":1}, 
{"key":["Document-2458","MethodID","288"],"value":1}, 
{"key":["Document-2458","MethodID","92"],"value":1}, 
... 

如果我問的觀點是這樣的:

conn_str = 'http://127.0.0.1:5984/portal_development/_design/all_data_values/_view/view1?group=true' 
key = '["Document-2458","MethodID","287"]' 
result = JSON.parse(open(conn_str + "&key=" + CGI.escape(key)).read) 
puts result 

我得到這樣的結果:

{"rows"=>[{"key"=>["Document-2458", "MethodID", "287"], "value"=>1}]} 

但是,如果我這樣做:

conn_str2 = 'http://127.0.0.1:5984/portal_development/_design/all_data_values/_view/view1?group=true' 
key = '["Document-' + "2485" + '","MethodID","287"]' 
result = JSON.parse(open(conn_str2 + "&key=" + CGI.escape(key)).read) 
puts result 

我得到一個空的結果:

{"rows"=>[]} 

我不能爲我的生命弄清楚爲什麼......我甚至使出開裂開放Wireshark的,看這兩個查詢在電線上。數據包的數據部分中的字節是相同的(具有url和params的東西)。我確認couchdb確實發回了第一個非空數據,第二個空數據。 CouchDB的甚至顯示在日誌中相同的查詢:

[info] [<0.19053.0>] 127.0.0.1 - - 'GET' /portal_development/_design/all_data_values/_view/view1?group=true&key=%5B%22Document-2458%22%2C%22MethodID%22%2C%22287%22%5D 200 
[info] [<0.19055.0>] 127.0.0.1 - - 'GET' /portal_development/_design/all_data_values/_view/view1?group=true&key=%5B%22Document-2485%22%2C%22MethodID%22%2C%22287%22%5D 200 

的問題是每當我Concat的字符串,而不是硬編碼它,甚至想到得到的字符串是相同的。但我不知道爲什麼。思考?

回答

1

隨着第一個關鍵測試你有Document-2458其中第二個你有"Document-" + "2485"

如您所見,您已將8和5轉置到文檔ID的末尾。

+0

啊,非常感謝。不能相信我錯過了這一點。幫助有另一組眼睛(也許有些睡覺:))。 – 2013-03-26 13:09:20

+0

編碼獨奏:)的問題......總是發生。 – Simon 2013-03-26 18:35:37