CGS, I think we are talking of different things. The original question was: is it possible to make a view request with a list of keys?
My response was: yes, but you need to use POST, as documented at http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options Your response was: you can use a GET, simply use as many `key[]=key` query parameters as needed to send the list of keys. Then I've asked how do you do that, since: 1. it does not work for me. 2. it's not documented. Your sample code does a different thing and does not respond to the original question: is it possible to make a view request with a list of keys? Your sample code uses an array as start/end keys, but this is not the same as asking for a list of keys. Marcello 2012/1/18 CGS <[email protected]>: > ...and, yes, it is cache-able because if I repeat the request (with the > exact same parameters), the browser reports "304 Not Modified". > > CGS > > > > On Wed, Jan 18, 2012 at 12:34 PM, CGS <[email protected]> wrote: > >> >> Here is an example (I used list function, but it works with pure map >> function nevertheless): >> >> 1. jQuery plugin: >> >> $.test = $.test || {}; >> $.extend($.test, { >> fetch_data_startendkey: function(options) { >> options = options || {}; >> $.ajax({ >> type : "GET", >> url : " >> http://my_domain.domain_type:5984/mydatabase/_design/design_name/_list/list_function_name/view_function_name?startkey= >> "+options.startkey+"&endkey="+options.endkey+"&limit="+options.limit+"&skip="+options.skip+"&descending="+options.descending, >> dataType : "json", >> async : false, >> global : false, >> data : {}, >> error : options.error, >> success : options.success >> }); >> } >> }); >> >> 2. jQuery callback: >> >> $.test.fetch_data_startendkey({ >> startkey: "my_string", >> endkey: "my_other_string", >> limit: mylimit, >> skip: myoffset, >> descending: my_descending_boolean, >> success : function(data, textStatus, headers) { >> /* do something with the predefined errors and the >> returned data if no predefined error returned */ >> }, >> error : function(code, error, reason) { >> /* do something with the error */ >> } >> }); >> >> where "my_*string" is the list transformed in string (e.g., >> "[\""+key1+"\",\""+key2+...+"\"]", whatever method used to get that >> string), mylimit and myoffset are integers and so on. No manual encoding >> needed (handled by the browser). >> >> 3. The request in log shows no difference from the direct request from the >> address bar. >> >> This works for me without any problem for my CouchDB 1.1.0. I know the >> method can be improved to be more robust, but I have no time now for that. >> Nevertheless, GET method works and it doesn't require manual encoding. >> >> CGS >> >> PS: I hope I don't have typos and neither I omitted something as I am >> quite tired now. If I did, please, let me know. >> >> >> >> >> >> On Wed, Jan 18, 2012 at 12:01 PM, Marcello Nuccio < >> [email protected]> wrote: >> >>> I'm not sure to follow... >>> >>> 1. are you sure the GET does work? When I try, the key[] parameters are >>> ignored. >>> >>> 2. IMHO the advantage of GET is cache-ability. Building a JSON is quite >>> easy: >>> JSON.stringify({ keys: [ "key1", "key2" ] }); >>> >>> Can you give some more information? >>> >>> Thanks, >>> Marcello >>> >>> 2012/1/18 CGS <[email protected]>: >>> > The problem with POST method is that you need to do the encoding >>> manually, >>> > while with GET method instead of &key=["key1",...], you get >>> > &key[]=["key1"]&key[]=... To solve the problem, for example, I transform >>> > the full query in a string and I attach it manually to the web address. >>> In >>> > that way, the browser takes care of encoding for me and I avoid the >>> mess. I >>> > use this method under jQuery AJAX (don't forget to add \" for the double >>> > quota required in the query). >>> > >>> > Hope it will help. >>> > >>> > CGS >>> > >>> > >>> > >>> > >>> > >>> > On Wed, Jan 18, 2012 at 11:29 AM, Marcello Nuccio < >>> [email protected] >>> >> wrote: >>> > >>> >> Yes, but you need to do a POST, not a GET: >>> >> >>> >> http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options >>> >> >>> >> put the following JSON in the body: >>> >> {"keys": ["key1", "key2", ...]} >>> >> >>> >> Marcello >>> >> >>> >> 2012/1/18 Alexandre Masselot <[email protected]>: >>> >> > Hello, >>> >> > >>> >> > I'm using view with a simple map that extract a couple of values (we >>> >> store >>> >> > millions of web page info in couchdb and I need to access rapidly a >>> md5 >>> >> > field to know whether we should treat a crawled page or if we already >>> >> know >>> >> > it). >>> >> > >>> >> > It's fine to get the view output for one page >>> >> > http://127.0.0.1:5984/honbot/_design/projections/_view/md5?key= >>> >> > "http%253A%252F%252Fwww.gesunde-maenner.ch%252Fhtml%252F" >>> >> > >>> >> > >>> >> > For saving, we use bulk_docs to save doc per 1000 slices and that >>> goes >>> >> much >>> >> > faster. >>> >> > >>> >> > My question is: is it possible to make a view request list above, but >>> >> with >>> >> > a list of key? >>> >> > Let's say >>> >> > "http%253A%252F%252Fwww.gesunde-maenner.ch%252Fhtml%252F" >>> >> > and "http%253A%252F%252Fwww.pipo.com" >>> >> > >>> >> > >>> >> > thanks for the help >>> >> > alex >>> >> > -- >>> >> > Alexandre Masselot >>> >> > >>> >> > http://alexandre-masselot.blogspot.com/ >>> >> >>> >> >>
