Spec-Zone.ru › Web APIs

IDBИндекс: метод openCursor()

Базовая Широко доступная

Эта функция хорошо отработана и работает на многих устройствах и версиях браузера. Она доступна во всех браузерах с сентября 2021 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Потоках веб-работников.

Метод openCursor() интерфейса IDBIndex возвращает объект IDBRequest и в отдельном потоке создает курсор над заданным диапазоном ключей.

Метод устанавливает позицию курсора в соответствующую запись, основываясь на указанном направлении.

Если диапазон ключей не указан или равен null, то диапазон включает все записи.

Синтаксис

openCursor()
openCursor(range)
openCursor(range, direction)

Параметры

range Необязательно

Ключ или IDBKeyRange, используемый в качестве диапазона курсора. Если ничего не передано, по умолчанию используется диапазон ключей, выбирающий все записи в этом хранилище объектов.

direction Необязательно

Направление курсора. См. Константы IDBCursor для возможных значений.

Возвращаемое значение

Объект IDBRequest, на котором впоследствии будут срабатывать события, связанные с этой операцией.

При успешном выполнении операция значение свойства result запроса:

  • объект IDBCursorWithValue, указывающий на первую запись, соответствующую заданному запросу
  • null если соответствующих записей не найдено.

Исключения

Этот метод может вызывать исключение DOMException одного из следующих типов:

TransactionInactiveError DOMException

Вызывается, если транзакция данного IDBIndex неактивна.

TypeError

Вызывается, если значение параметра direction некорректно.

DataError DOMException

Вызывается, если предоставленный ключ или диапазон ключей содержат некорректный ключ.

InvalidStateError DOMException

Вызывается, если IDBIndex был удалён или удален.

Примеры

В следующем примере мы открываем транзакцию и хранилище объектов, затем получаем индекс lName из простой базы данных контактов. Затем мы открываем базовый курсор на индексе, используя openCursor(). Это работает так же, как открытие курсора напрямую на ObjectStore, используя IDBObjectStore.openCursor, за исключением того, что возвращаемые записи сортируются по индексу, а не по первичному ключу.

Наконец, мы перебираем каждую запись и вставляем данные в HTML-таблицу. Для полного рабочего примера см. наш репозиторий примеров IndexedDB (Просмотреть пример вживую).

function displayDataByIndex() {
  tableEntry.textContent = "";
  const transaction = db.transaction(["contactsList"], "readonly");
  const objectStore = transaction.objectStore("contactsList");

  const myIndex = objectStore.index("lName");

  myIndex.openCursor().onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const tableRow = document.createElement("tr");
      for (const cell of [
        cursor.value.id,
        cursor.value.lName,
        cursor.value.fName,
        cursor.value.jTitle,
        cursor.value.company,
        cursor.value.eMail,
        cursor.value.phone,
        cursor.value.age,
      ]) {
        const tableCell = document.createElement("td");
        tableCell.textContent = cell;
        tableRow.appendChild(tableCell);
      }
      tableEntry.appendChild(tableRow);

      cursor.continue();
    } else {
      console.log("Entries all displayed.");
    }
  };
}

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

Спецификация
Indexed Database API 3.0
# ref-for-dom-idbindex-opencursor②

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
openCursor 23 12 10 15 8 25 22 14 8 1.5 4.4

См. также

  • Использование IndexedDB
  • Начало транзакций: IDBDatabase
  • Использование транзакций: IDBTransaction
  • Установка диапазона ключей: IDBKeyRange
  • Получение и изменение данных: 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/IDBIndex/openCursor

Spec-Zone.ru

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