2013-03-22 30 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