Я пытаюсь получить записи из indexedDB по ключу и применить некоторое смещение.
У меня есть данные на indexedDb, например:
[
{id: 0, status: 'valid', message: 'some message ....'},
{id: 1, status: 'invalid', message: 'some message....'},
{id: 2, status: 'warning', message: 'some message....'},
{id: 3, status: 'valid', message: 'some message....'},
{id: 4, status: 'valid', message: 'some message....'},
{id: 5, status: 'valid', message: 'some message....'}
]
Мне нужно отфильтровать данные по ' ключ status и отображать его с нумерацией страниц, поэтому, если у меня 20 записей со статусом 'valid', мне нужно отобразить только 15 и установить нумерацию страниц. С первой страницей все в порядке, но я не могу создать правильный запрос к indexedDB, чтобы получить записи с ключом 'valid', но со смещением = 15. Как я могу это сделать? Я пробовал это, но db.getAllFromIndex не принимает смещение, или я не понимаю, как это передать. Я использую пакет 'idb' здесь: https://www.npmjs.com/package/idb
const db = await openDB('DB', 1, {
upgrade(db) {
if (!db.objectStoreNames.contains('dbName')) {
db.createObjectStore('dbName').createIndex('status', 'status', {unique: false});
}
//...code for setting data here...
};
async getData(filter, offset = 0) {
const tx = db.transaction('dbName'),
range = offset ? IDBKeyRange.lowerBound(offset, true) : null,
items = filter === 'all'
? await db.getAll('dbName', range, rules.limit)// everything ok with plain data without filtering by key
: await db.getAllFromIndex('dbName', 'status', filter, rules.limit),// bug is here! should be offset
pagination = ...some code for define pagination...
await tx.done;
return { items, pagination };
}
Так, как я могу сделать это правильно? Спасибо