2013-03-22 2 views
0

나는 이것이 couchrest의 문제라고 생각했지만, 더 깊은 내부 Ruby 문제 인 것 같습니다. 다음 CouchDB를보기 키/값 :couchdb/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가 실제로 처음에 비어 있지 않은 데이터를 돌려주고, 두 번째에 비어있는 데이터를 보냈 음을 확인합니다. 심지어 결과 문자열이 같은 생각을 코딩하는 대신 하드의 문자열을 CONCAT 때마다

[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 

문제는 다음과 같습니다 CouchDB를 심지어 로그에 동일한 쿼리를 보여줍니다. 그러나 나는 이유를 모른다. 생각?

답변

1

첫 번째 키 테스트에서는 Document-2458이 있고 두 번째 것은 "Document-" + "2485"입니다.

에서와 같이 문서 ID 끝에 8과 5를 옮겼습니다.

+0

아, 정말 고마워. 내가 그걸 놓쳤다는 것을 믿을 수 없어. 또 다른 눈 세트 (어쩌면 몇 가지 수면 :)를 갖도록 도와줍니다. –

+0

솔로 코딩 문제는 .... 항상 발생합니다. – Simon