Создание / использование составных индексов IndexedDB - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь реализовать IndexedDB в своем приложении angular, и у меня возникает проблема при попытке создания и использования составных индексов.

У меня есть несколько индексов, которые я хочу.

const objectStore: IDBObjectStore = this._Database.createObjectStore('data', {autoIncrement: true});
objectStore.createIndex('duplicate', ['sId', 'type', 'cancel']);
objectStore.createIndex('id', ['id']);

Когда я добавляю данные в базу данных и смотрю в Chrome DevTools, я вижу, что в хранилище объектов есть данные, но нет ни одного из индексов.

Индекс duplicate, который я пытаюсь выполнить используйте для проверки, если что-то уже существует. SQL запрос о том, что я пытаюсь выполнить sh, будет выглядеть следующим образом.

SELECT * FROM data WHERE sID = {someValue} AND type = {someValue} AND cancel = {someValue}

Когда я пытаюсь сделать запрос, он выглядит так

const request: IDBRequest = objectStore.index('duplicate').count(IDBKeyRange.only([data.sId, data.type, 0]));

, но счетчик всегда возвращается без всякой мысли, что я вижу, что он был сохранен в хранилище.

Я могу заставить индексы работать, если я использую одиночные keyPaths, такие как

objectStore.createIndex('id', ['id']);

, но keypaths, которые несколько ключей не работают

Может кто-нибудь сказать мне, что я здесь не так делаю?

...