Spec-Zone.ru › Web APIs

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

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

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

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

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

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

Если первичный ключ найден, он устанавливается как result объекта запроса. Обратите внимание, что это не возвращает всю запись, как делает метод IDBIndex.get.

Синтаксис

getKey()
getKey(key)

Параметры

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

Ключ или IDBKeyRange, идентифицирующие запись, которую нужно получить. Если это значение равно null или отсутствует, браузер будет использовать не ограниченный диапазон ключей.

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

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

Если операция выполнена успешно, значение свойства result объекта запроса — ключ для первой записи, соответствующей заданному ключу или диапазону ключей.

Исключения

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

TransactionInactiveError DOMException

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

DataError DOMException

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

InvalidStateError DOMException

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

Примеры

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

Затем используется myIndex.getKey('Bungle') для извлечения первичного ключа записи с lName Bungle, и результат этого запроса регистрируется в консоли, когда возвращается обработчик успешного выполнения.

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

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

  const myIndex = objectStore.index("lName");
  const getKeyRequest = myIndex.getKey("Bungle");
  getKeyRequest.onsuccess = () => {
    console.log(getKeyRequest.result);
  };

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

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

Спецификация
API индексированной базы данных 3.0
# ref-for-dom-idbindex-getkey①

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

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

Spec-Zone.ru

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