Это возможно из коробки, используя либо составные ключи, либо фрагменты ключей.
Клавиши работают в IndexedDB так, что вы генерируете объект "keyRange" и передаете его вызову курсора. Брелок передает информацию, такую как «начинаются в A и заканчиваются в Z включительно».
По своей природе в это встроено частичное соответствие; недостатком является то, что ваш курсор будет возвращать любые клавиши, которые находятся между вашими клавишами, и вам, возможно, придется отфильтровать эти результаты дальше.
Скажем, у вас есть эти слова в качестве ключей в хранилище объектов:
- Aardvark
- Apple
- Google
- Microsoft
Ключевой диапазон «от A до Z включительно» вернул бы все это, но «от Ap до Z включительно» вернул бы только последние три.
Другой метод, который я использовал для реализации этого, - это передача функции «filter» моим методам, которые вызывают IndexedDB. Внутри методов обратного вызова onsuccess, передайте результат (event.target.result
) через функцию фильтра и, если он вернет true, вызовите обратный вызов onsuccess вызывающего метода.