0

我认为这是沙发的问题,但似乎是更深层次的内部 Ruby 问题。使用以下 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 和参数的东西)。我确认 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

问题是每当我连接字符串而不是对其进行硬编码时,即使认为结果字符串是相同的。但我不知道为什么。想法?

4

1 回答 1

1

有了第一个关键测试,你就有Document-2458了第二个关键测试"Document-" + "2485"

如中,您已在文档 ID 的末尾调换了 8 和 5。

于 2013-03-22T21:54:49.800 回答