IDBKeyRange
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Потоках выполнения в браузере.
Интерфейс IDBKeyRange API IndexedDB представляет собой непрерывный интервал над некоторым типом данных, используемым для ключей. Записи могут быть извлечены из объектов IDBObjectStore и IDBIndex с использованием ключей или диапазона ключей. Вы можете ограничить диапазон с помощью нижней и верхней границ. Например, вы можете перебрать все значения ключа в диапазоне значений A–Z.
Диапазон ключей может представлять собой одно значение или диапазон с верхними и нижними границами или конечными точками. Если диапазон ключей имеет как верхнюю, так и нижнюю границы, то он является *ограниченным*; если у него нет границ, то он является *неограниченным*. Ограниченный диапазон ключей может быть открытым (конечные точки исключены) или закрытым (конечные точки включены). Для получения всех ключей в определенном диапазоне можно использовать следующие конструкции кода:
| Диапазон | Код |
|---|---|
| Все ключи ≥ x | IDBKeyRange.lowerBound(x) |
| Все ключи > x | IDBKeyRange.lowerBound(x, true) |
| Все ключи ≤ y | IDBKeyRange.upperBound(y) |
| Все ключи < y | IDBKeyRange.upperBound(y, true) |
| Все ключи ≥ x && ≤ y | IDBKeyRange.bound(x, y) |
| Все ключи > x &&< y | IDBKeyRange.bound(x, y, true, true) |
| Все ключи > x && ≤ y | IDBKeyRange.bound(x, y, true, false) |
| Все ключи ≥ x &&< y | IDBKeyRange.bound(x, y, false, true) |
| Ключ = z | IDBKeyRange.only(z) |
Ключ находится в диапазоне ключей, если выполняются следующие условия:
-
Нижнее значение диапазона ключей — одно из следующих:
undefined- Меньше значения ключа
- Равно значению ключа, если
lowerOpenявляетсяfalse.
-
Верхнее значение диапазона ключей — одно из следующих:
undefined- Больше значения ключа
- Равно значению ключа, если
upperOpenявляетсяfalse.
Свойства экземпляра
-
IDBKeyRange.lowerТолько для чтения -
Нижняя граница диапазона ключей.
-
IDBKeyRange.upperТолько для чтения -
Верхняя граница диапазона ключей.
-
IDBKeyRange.lowerOpenТолько для чтения -
Возвращает false, если значение нижней границы включено в диапазон ключей.
-
IDBKeyRange.upperOpenТолько для чтения -
Возвращает false, если значение верхней границы включено в диапазон ключей.
Статические методы
IDBKeyRange.bound()-
Создает новый диапазон ключей с верхними и нижними границами.
IDBKeyRange.only()-
Создает новый диапазон ключей, содержащий одно значение.
IDBKeyRange.lowerBound()-
Создает новый диапазон ключей только с нижней границей.
IDBKeyRange.upperBound()-
Создает новый диапазон ключей с верхней границей.
Методы экземпляра
IDBKeyRange.includes()-
Возвращает булево значение, указывающее, находится ли указанный ключ внутри диапазона ключей.
Примеры
Следующий пример демонстрирует, как использовать диапазон ключей. Здесь мы объявляем keyRangeValue как диапазон между значениями "A" и "F". Мы открываем транзакцию (с помощью IDBTransaction) и магазин объектов, и открываем курсор с помощью IDBObjectStore.openCursor, объявляя keyRangeValue как необязательное значение диапазона ключей. Это означает, что курсор будет извлекать только записи с ключами внутри этого диапазона. Этот диапазон включает значения "A" и "F", так как мы не указали, что они должны быть открытыми границами. Если бы мы использовали IDBKeyRange.bound("A", "F", true, true);, то диапазон не включал бы "A" и "F", а только значения между ними.
Примечание: Для более полного примера, позволяющего экспериментировать с диапазонами ключей, ознакомьтесь с нашим репозиторием IDBKeyRange-example (посмотреть пример онлайн тоже.)
function displayData() {
const keyRangeValue = IDBKeyRange.bound("A", "F");
const transaction = db.transaction(["fThings"], "readonly");
const objectStore = transaction.objectStore("fThings");
objectStore.openCursor(keyRangeValue).onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.fThing}, ${cursor.value.fRating}`;
list.appendChild(listItem);
cursor.continue();
} else {
console.log("Entries all displayed.");
}
};
}
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
IDBKeyRange |
2423–57 | 12 | 1610–16 | 1515–44 | 8 | 2525–57 | 22 | 1414–44 | 8 | 1.51.5–7.0 | 4.4≤37–57 |
bound_static |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
includes |
52 | 79 | 47 | 39 | 10.1 | 52 | 47 | 41 | 10.3 | 6.0 | 52 |
lower |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
lowerBound_static |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
lowerOpen |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
only_static |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
upper |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
upperBound_static |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
upperOpen |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
worker_support |
23 | 12 | 37 | 15 | 10 | 25 | 37 | 14 | 10 | 1.5 | 4.4 |
См. также
- Использование IndexedDB
- Начало транзакций:
IDBDatabase - Использование транзакций:
IDBTransaction - Получение и внесение изменений в данные:
IDBObjectStore - Использование курсоров:
IDBCursor - Пример ссылки: Уведомления о задачах (Просмотреть пример в браузере).
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange