Я пытаюсь реализовать 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, которые несколько ключей не работают
Может кто-нибудь сказать мне, что я здесь не так делаю?