Как получить записи из indexedDB по ключу с некоторым смещением? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь получить записи из 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 };
}

Так, как я могу сделать это правильно? Спасибо

...