demo · v133
Paginated Reader
Chrome 133 adds getAllRecords() to IDBObjectStore and IDBIndex, plus a direction option for getAll()/getAllKeys(). This demo uses both to implement a paginated reader on a live IndexedDB store — forward and reverse paging via the direction option, with getAllRecords() returning key + primaryKey + value in one call. Compare timing against the cursor fallback.
Checking getAllRecords() / direction option support…
Page — of —
| Primary key | Title | Category | Score |
|---|---|---|---|
| Seed the DB then load a page. | |||
Seed the database, then click "Load page".
// Chrome 133: getAllRecords() with direction option
const store = db.transaction('items', 'readonly').objectStore('items');
// Read page N in reverse order, getting key + primaryKey + value
const records = await new Promise((resolve, reject) => {
const range = IDBKeyRange.bound(
pageStart, pageEnd
);
const req = store.getAllRecords({
query: range,
count: pageSize,
direction: 'prev', // ← new in Chrome 133
});
req.onsuccess = e => resolve(e.target.result);
req.onerror = e => reject(e.target.error);
});
// Each record: { key, primaryKey, value }
records.forEach(({ key, primaryKey, value }) => {
console.log(key, primaryKey, value.title);
});