Spec-Zone.ru › Web APIs

IDBИндекс

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

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

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

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

IDBIndex интерфейс API IndexedDB API обеспечивает асинхронный доступ к индексу в базе данных. Индекс — это своего рода хранилище для поиска записей в другом хранилище объектов, которое называется хранилищем-ссылкой. Вы используете этот интерфейс для извлечения данных.

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

Индекс — это постоянное хранилище ключ-значение, где значение записи является ключом записи в хранилище-ссылке. Записи в индексе автоматически заполняются всякий раз, когда записи в хранилище-ссылке вставляются, обновляются или удаляются. Каждая запись в индексе может указывать только на одну запись в хранилище-ссылке, но несколько индексов могут ссылаться на одно и то же хранилище объектов. При изменении хранилища объектов все индексы, которые ссылаются на хранилище объектов, автоматически обновляются.

Вы можете получить набор ключей в определенном диапазоне. Дополнительную информацию см. в IDBKeyRange.

Свойства экземпляра

IDBIndex.isAutoLocale Только для чтения Нестандартный Устаревший

Возвращает логическое значение, указывающее, имел ли индекс locale значение auto при его создании (см. параметр options для IDBObjectStore.createIndex().)

IDBIndex.locale Только для чтения Нестандартный Устаревший

Возвращает локаль индекса (например, en-US, или pl) если при его создании было задано значение locale (см. параметр options для IDBObjectStore.createIndex().)

IDBIndex.name

Имя этого индекса.

IDBIndex.objectStore Только для чтения

Имя хранилища объектов, на которое ссылается этот индекс.

IDBIndex.keyPath Только для чтения

Путь к ключу этого индекса. Если null, этот индекс не заполняется автоматически.

IDBIndex.multiEntry Только для чтения

Влияет на поведение индекса, когда результат вычисления пути ключа индекса — массив. Если true, в индексе имеется по одной записи для каждого элемента массива ключей. Если false, тогда имеется по одной записи для каждого ключа, который является массивом.

IDBIndex.unique Только для чтения

Если true, этот индекс не допускает дубликатов значений для ключа.

Методы экземпляра

Наследуется от: EventTarget

IDBIndex.count()

Возвращает объект IDBRequest, и в отдельном потоке возвращает количество записей в заданном диапазоне ключей.

IDBIndex.get()

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

IDBIndex.getKey()

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

IDBIndex.getAll()

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

IDBIndex.getAllKeys()

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

IDBIndex.openCursor()

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

IDBIndex.openKeyCursor()

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

Пример

В следующем примере мы открываем транзакцию и хранилище объектов, а затем получаем индекс lName из простой базы данных контактов. Затем мы открываем базовый курсор на индексе с помощью IDBIndex.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
# index-interface

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
IDBIndex 2423–57 12 1610–16 15 8 2525–57 22 14 8 1.51.5–7.0 4.4≤37–57
count 23 12 10 15 8 25 22 14 8 1.5 4.4
get 23 12 10 15 8 25 22 14 8 1.5 4.4
getAll 48 79 44 35 10.1 48 44 35 10.3 5.0 48
getAllKeys 48 79 44 35 10.1 48 44 35 10.3 5.0 48
getKey 23 12 10 15 8 25 22 14 8 1.5 4.4
isAutoLocale Нет Нет 43 Нет Нет Нет Нет Нет Нет Нет Нет
keyPath 23 12 10 15 8 25 22 14 8 1.5 4.4
locale Нет Нет 43 Нет Нет Нет Нет Нет Нет Нет Нет
multiEntry 23 12 10 15 8 25 22 14 8 1.5 4.4
name 23 12 10 15 8 25 22 14 8 1.5 4.4
objectStore 23 12 10 15 8 25 22 14 8 1.5 4.4
openCursor 23 12 10 15 8 25 22 14 8 1.5 4.4
openKeyCursor 23 12 10 15 8 25 22 14 8 1.5 4.4
unique 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
  • Установка диапазона ключей: 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

Spec-Zone.ru

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