Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML5 How to tell when IndexedDB cursor is at end

I am iterating thru an indexedDB data store, adding data to a JavaScript array. How can I tell when the cursor is at the end, so I can sort the array and act on it?

onsuccess is called when a row has been retrieved from the cursor - is there another callback when the entire cursor has been navigated?

like image 373
ed4becky Avatar asked May 19 '13 20:05

ed4becky


1 Answers

The result (event.target.result) of a successful cursor request is either a cursor object or null.

If event.target.result is set, it's the cursor, and you can access event.target.result.value. You can then call event.target.result.continue() to go on to the next object, if any.

If event.target.result is not set, then there are no more objects.

For illustration, some code from a project of mine:

  var collectObjects = function (request, cb) {
    var objects = []
    request.onsuccess = function (event) {
      if (!event.target.result) return cb(null, objects)
      cursor = event.target.result
      objects.push(cursor.value)
      cursor.continue()
    }
    request.onerror = function (event) {
      cb(event.target.error)
    }
like image 129
Myrne Stol Avatar answered Nov 15 '22 00:11

Myrne Stol