Spec-Zone.ru › Web APIs

IDBObjectStore: метод index()

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

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

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

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

Метод index() интерфейса IDBObjectStore открывает именованный индекс в текущем хранилище объектов, после чего его можно использовать, например, для возвращения набора записей, отсортированных по этому индексу, с помощью курсора.

Синтаксис

index(name)

Параметры

name

Имя открываемого индекса.

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

Объект IDBIndex для доступа к индексу.

Исключения

InvalidStateError DOMException

Выбрасывается, если исходное хранилище объектов было удалено или транзакция для хранилища объектов завершена.

NotFoundError DOMException

Выбрасывается, если в базе данных нет индекса с заданным именем (регистрозависимо).

Примеры

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

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

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

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

Спецификация
API индексированной базы данных 3.0
# dom-idbobjectstore-index

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

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

Spec-Zone.ru

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