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?
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)
}