IDBObjectStore: метод openCursor()
Базовая Широко доступная
Эта функция хорошо отработана и работает на многих устройствах и версиях браузера. Она доступна в браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Web Workers.
Метод openCursor() интерфейса IDBObjectStore возвращает объект IDBRequest, который в отдельном потоке возвращает новый объект IDBCursorWithValue. Используется для итерации по объектному хранилищу с помощью курсора.
Чтобы определить, завершилась ли операция добавления успешно, прослушайте событие success результата.
Синтаксис
openCursor() openCursor(query) openCursor(query, direction)
Параметры
queryНеобязательно-
Ключ или
IDBKeyRangeдля запроса. Если передан единственный допустимый ключ, это по умолчанию будет диапазон, содержащий только этот ключ. Если ничего не передано, это по умолчанию будет диапазон ключей, который выбирает все записи в этом объектном хранилище. directionНеобязательно-
Строка, указывающая курсору направление перемещения. По умолчанию
next. Допустимые значения:next-
Курсор открывается в начале хранилища; затем курсор возвращает все записи, включая дубликаты, в порядке возрастания ключей.
nextunique-
Курсор открывается в начале хранилища; затем курсор возвращает все записи, не являющиеся дубликатами, в порядке возрастания ключей.
prev-
Курсор открывается в конце хранилища; затем курсор возвращает все записи, включая дубликаты, в порядке убывания ключей.
prevunique-
Курсор открывается в конце хранилища; затем курсор возвращает все записи, не являющиеся дубликатами, в порядке убывания ключей.
Возвращаемое значение
Объект IDBRequest, на котором впоследствии срабатывают события, связанные с этой операцией.
Если операция выполнена успешно, значение свойства запроса result равно:
- объекту
IDBCursorWithValue, указывающему на первую запись, соответствующую заданному запросу -
nullесли не найдено соответствующих записей.
Исключения
Этот метод может вызвать DOMException одного из следующих типов:
-
InvalidStateErrorDOMException -
Выбрасывается, если этот
IDBObjectStoreилиIDBIndexбыл удален. -
TransactionInactiveErrorDOMException -
Выбрасывается, если транзакция этого
IDBObjectStoreнеактивна. -
DataErrorDOMException -
Выбрасывается, если указанный ключ или диапазон ключей некорректны.
Примеры
В этом простом фрагменте мы создаём транзакцию, получаем объектное хранилище, а затем используем курсор для итерации по всем записям в объектном хранилище:
const transaction = db.transaction("name", "readonly");
const objectStore = transaction.objectStore("name");
const request = objectStore.openCursor();
request.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
// cursor.value contains the current record being iterated through
// this is where you'd do something with the result
cursor.continue();
} else {
// no more results
}
};
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для 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/IDBObjectStore/openCursor