On 6/9/2010 3:48 PM, Kris Zyp wrote:
Another option would be to have cursors essentially implement a JS
array-like API:

db.objectStore("foo").openCursor(range).forEach(function(object){
   // do something with each object
}).onsuccess = function(){
    // all done
});

(Or perhaps the cursor with a forEach would be nested inside a
callback, not sure).

The standard "some" function is also useful if you know you probably
won't need to iterate through everything

db.objectStore("foo").openCursor(range).some(function(object){
   return object.name == "John";
}).onsuccess = function(johnIsInDatabase){
    if(johnIsInDatabase){
      ...
    }
});

This allows us to have an async interface (the callbacks can be called
at any time) and still follows normal JS array patterns, for
programmer convenience (so programmers wouldn't need to iterate over a
cursor and push the results into another array). I don't think anyone
would miss getAll() with this design, since cursors would already be
array-like.
To me, this feels like we are basically doing what we expect a library to do: make the syntactic sugar work. I don't see why a library couldn't provide a some or forEach method with the currently proposed API.

Cheers,

Shawn

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to