I'm using a cursor with a lower bound range query. I can't find a way to limit the number of objects returned, similar to a "LIMIT n" clause in a databse.
var keyRange = IDBKeyRange.lowerBound('');
Does it not exist ?
As you're iterating through the results, you can stop at any time. Something like this should work:
var results = [];
var limit = 20;
var i = 0;
objectStore.openCursor().onsuccess = function (event) {
var cursor = event.target.result;
if (cursor && i < limit) {
results.push(cursor.value);
i += 1;
cursor.continue();
}
else {
// Do something with results, which has at most 20 entries
console.log(results);
}
};
Also, in the special case where you are selecting based on a key that is made up of sequential numbers, you could use a keyRange to explicitly return only a certain range. But that's generally not the case.
An important fix its replace:
if (cursor && i < limit) {
for
if (cursor && results.length < limit) {
Remember that its an async call, and it could be adding elements on "results" at the same time and "i" would not have the proper value.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With