Как можно фильтровать записи по 100 КБ в indexedDB? - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть хранилище IndexedDB, в котором есть 100 тыс. Полей имен.Как отфильтровать его по имени и подстроке?

Я пытался использовать indexeddb getall (), но это привело к увеличению загрузки процессора.Использование курсора для итерации заняло много времени.Пробовал Dexie JS.

Есть ли хорошая реализация для выполнения такого рода операции?

1 Ответ

1 голос
/ 15 апреля 2019

Если вы индексируете поле имени, вы можете выполнить поиск по префиксу, но обычных индексов недостаточно для полного поиска по подстроке.

const db = new Dexie ('dbname');
db.version(1).stores({things: 'id, name'});

function query(prefix) {
  return db.things
    .where('name').startsWith(prefix)
    .toArray();
}

В этом примере определяется индекс для поля «имя», а функция запроса выполняет getAll () для индекса «имя», используя IDBKeyRange, представляющий все имена, начинающиеся с данной строки.

...