Thank you Rogutės, this answers the question and it works. Now I think the wiki should be updated. I cannot find any mention of the "keys" parameter.
It's OK for everyone if I update the wiki with this information? thanks, Marcello 2012/1/18 Rogutės Sparnuotos <[email protected]>: > This parameter works fine with integer keys in Firefox: > ?keys=[4739, 4823] > But you would really have to encode it to this: > ?keys=%5B4739%2C+4823%5D > All using GET. > > Marcello Nuccio (2012-01-18 12:56): >> 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/ >> >>> >> >> >>> >> >> >> >> > > -- > -- Rogutės Sparnuotos
