Spec-Zone.ru › Web APIs

IDBIndex: метод openKeyCursor()

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

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

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

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

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

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

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

Примечание: Курсоры, возвращаемые методом openKeyCursor() , не делают доступным ссылку на значение, как это делает метод IDBIndex.openCursor. Это делает получение списка ключей значительно эффективнее.

Синтаксис

openKeyCursor()
openKeyCursor(range)
openKeyCursor(range, direction)

Параметры

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

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

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

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

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

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

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

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

Исключения

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

TransactionInactiveError DOMException

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

TypeError

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

DataError DOMException

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

InvalidStateError DOMException

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

Примеры

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

Наконец, мы проходим по каждой записи в индексе и вставляем фамилию и соответствующий первичный ключ связанной записи в таблицу HTML.

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

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

  myIndex.openKeyCursor().onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const tableRow = document.createElement("tr");
      tableRow.appendChild(document.createElement("td")).textContent =
        cursor.key;
      tableRow.appendChild(document.createElement("td")).textContent =
        cursor.primaryKey;
      tableEntry.appendChild(tableRow);

      cursor.continue();
    } else {
      console.log("All last names displayed.");
    }
  };
}

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

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

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

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
openKeyCursor 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/openKeyCursor

Spec-Zone.ru

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