IDBИндекс: метод openCursor()
Базовая Широко доступная
Эта функция хорошо отработана и работает на многих устройствах и версиях браузера. Она доступна во всех браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Потоках веб-работников.
Метод openCursor() интерфейса IDBIndex возвращает объект IDBRequest и в отдельном потоке создает курсор над заданным диапазоном ключей.
Метод устанавливает позицию курсора в соответствующую запись, основываясь на указанном направлении.
Если диапазон ключей не указан или равен null, то диапазон включает все записи.
Синтаксис
openCursor() openCursor(range) openCursor(range, direction)
Параметры
rangeНеобязательно-
Ключ или
IDBKeyRange, используемый в качестве диапазона курсора. Если ничего не передано, по умолчанию используется диапазон ключей, выбирающий все записи в этом хранилище объектов. directionНеобязательно-
Направление курсора. См. Константы IDBCursor для возможных значений.
Возвращаемое значение
Объект IDBRequest, на котором впоследствии будут срабатывать события, связанные с этой операцией.
При успешном выполнении операция значение свойства result запроса:
- объект
IDBCursorWithValue, указывающий на первую запись, соответствующую заданному запросу -
nullесли соответствующих записей не найдено.
Исключения
Этот метод может вызывать исключение DOMException одного из следующих типов:
-
TransactionInactiveErrorDOMException -
Вызывается, если транзакция данного
IDBIndexнеактивна. TypeError-
Вызывается, если значение параметра direction некорректно.
-
DataErrorDOMException -
Вызывается, если предоставленный ключ или диапазон ключей содержат некорректный ключ.
-
InvalidStateErrorDOMException -
Вызывается, если
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.");
}
};
}
Спецификации
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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