Spec-Zone.ru › Web APIs

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.");
    }
  };
}

Спецификации

Спецификация
API баз данных индексированного доступа 3.0
# keyrange

Совместимость с браузерами

Рабочий стол Мобильный
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API