Итак, у меня есть магазин в indexeddb с составленным keyPath: [someKey, someSubKey]
. У меня есть индекс на someKey
. Я ищу самый быстрый способ удалить все объекты для данного someKey
. Подход, который я пытаюсь использовать, заключается в том, чтобы получить нижний и верхний подразделы индекса, а затем удалить их в хранилище с диапазоном ключей между нижним и верхним подразделами.
Это работает, по крайней мере, в Firefox и Chrome. Но предполагается, что порядок значений в индексе будет таким же, как и в магазине. Мне интересно, это безопасное предположение? Я думаю, что это возможно, поскольку ключевые пути хранения и индекса используют первый ключ, но не могу найти много документации по порядку сортировки. Я бы предпочел не удалять каждую запись по отдельности, поскольку их может быть тысячи.
Псевдокод ниже описывает подход:
const someKeyRange = IDBKeyRange.only(givenSomeKey);
const lowerSubKey = index.openKeyCursor(someKeyRange, "next")
.primaryKey[1];
const upperSubKey = index.openKeyCursor(someKeyRange, "prev")
.primaryKey[1]; //1 to get subKey
const storeRange = IDBKeyRange.bound(
[givenSomeKey, lowerSubKey],
[givenSomeKey, upperSubKey]
);
store.delete(storeRange);