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とparamsのもの)。そして、couchdbが実際に最初の空でないデータと2番目の空のデータを返送していることを確認します。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では、2番目のキーテストではどこにありますか"Document-" + "2485"

のように、ドキュメントIDの最後に8と5を転置しました。

于 2013-03-22T21:54:49.800 に答える