On 6/9/2010 3:48 PM, Kris Zyp wrote:
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.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.
Cheers, Shawn
smime.p7s
Description: S/MIME Cryptographic Signature