IDBCursor
Базовая версия Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Web Workers.
Примечание: Не следует путать с IDBCursorWithValue, которая является просто интерфейсом IDBCursor с дополнительным свойством value.
Интерфейс IDBCursor API IndexedDB представляет собой указатель для перебора или итерации по нескольким записям в базе данных.
Указатель имеет источник, указывающий, по какому индексу или объектному хранилищу он выполняется. Он имеет позицию в диапазоне и перемещается в направлении, увеличивающемся или уменьшающемся в порядке ключей записей. Указатель позволяет приложению асинхронно обрабатывать все записи в диапазоне указателя.
Вы можете иметь неограниченное количество указателей одновременно. Вы всегда получаете тот же объект IDBCursor , представляющий данный указатель. Операции выполняются на базовом индексе или объектовом хранилище.
Свойства экземпляра
Примечание: IDBCursorWithValue — это интерфейс IDBCursor с дополнительным свойством value.
-
IDBCursor.sourceТолько для чтения -
Возвращает
IDBObjectStoreилиIDBIndex, по которому выполняется итерация указателя. Эта функция никогда не возвращает null и не выбрасывает исключение, даже если указатель выполняет итерацию, достигнул конца, или его транзакция неактивна. -
IDBCursor.directionТолько для чтения -
Возвращает направление перебора указателя.
-
IDBCursor.keyТолько для чтения -
Возвращает ключ записи в позиции указателя. Если указатель находится вне своего диапазона, это значение устанавливается в
undefined. Ключ указателя может быть любого типа данных. -
IDBCursor.primaryKeyТолько для чтения -
Возвращает текущий эффективный первичный ключ указателя. Если указатель выполняет итерацию или вышел за пределы своего диапазона, это значение устанавливается в
undefined. Первичный ключ указателя может быть любого типа данных. -
IDBCursor.requestТолько для чтения -
Возвращает
IDBRequest, который использовался для получения указателя.
Методы экземпляра
IDBCursor.advance()-
Устанавливает количество раз, на которое указатель должен переместиться вперёд.
IDBCursor.continue()-
Перемещает указатель к следующей позиции в заданном направлении, к элементу, чей ключ соответствует необязательному параметру
key. IDBCursor.continuePrimaryKey()-
Устанавливает указатель на заданный индексный ключ и первичный ключ, указанные в качестве аргументов.
IDBCursor.delete()-
Возвращает объект
IDBRequestи удаляет запись в позиции указателя в отдельном потоке, не изменяя позицию указателя. Это можно использовать для удаления конкретных записей. IDBCursor.update()-
Возвращает объект
IDBRequestи обновляет значение в текущей позиции указателя в объектовом хранилище в отдельном потоке. Это можно использовать для обновления конкретных записей.
Константы
Устарело: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её поддерживать, она, возможно, уже удалена из соответствующих веб-стандартов, может быть в процессе удаления или может поддерживаться только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; см. таблицу совместимости ниже на этой странице, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любое время.
Предупреждение: Эти константы больше недоступны — они были удалены в Gecko 25. Вместо них следует использовать строковые константы. (Ошибка Firefox 891944)
-
NEXT:"next": Указатель отображает все записи, включая дубликаты. Он начинается с нижней границы диапазона ключей и перемещается вверх (монотонно увеличиваясь в порядке ключей). -
NEXTUNIQUE:"nextunique": Указатель отображает все записи, исключая дубликаты. Если несколько записей имеют один и тот же ключ, возвращается только первая итерированная запись. Он начинается с нижней границы диапазона ключей и перемещается вверх. -
PREV:"prev": Указатель отображает все записи, включая дубликаты. Он начинается с верхней границы диапазона ключей и перемещается вниз (монотонно уменьшаясь в порядке ключей). -
PREVUNIQUE:"prevunique": Указатель отображает все записи, исключая дубликаты. Если несколько записей имеют один и тот же ключ, возвращается только первая итерированная запись. Он начинается с верхней границы диапазона ключей и перемещается вниз.
Примеры
В этом простом фрагменте мы создаём транзакцию, получаем объектное хранилище, а затем используем указатель для перебора всех записей в объектовом хранилище. Указателю не нужно выбирать данные на основе ключа; мы можем просто взять их все. Обратите также внимание, что в каждом цикле вы можете получить данные из текущей записи в объекте указателя, используя cursor.value.foo. Для полного рабочего примера см. наш пример IDBCursor (посмотреть пример онлайн.)
function displayData() {
const transaction = db.transaction(["rushAlbumList"], "readonly");
const objectStore = transaction.objectStore("rushAlbumList");
objectStore.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
list.appendChild(listItem);
cursor.continue();
} else {
console.log("Entries all displayed.");
}
};
}
Спецификации
| Спецификация |
|---|
| Indexed Database API 3.0 # cursor-interface |
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari в IOS | Samsung Internet | WebView Android | |
IDBCursor |
2423–57 | 12 | 1610–16 | 4415–44 | 8 | 2525–57 | 22 | 4314–43 | 8 | 1.51.5–7.0 | 4.4≤37–57 |
advance |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
continue |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
continuePrimaryKey |
58 | 79 | 10 | 45 | 10.1 | 58 | 51 | 43 | 10.3 | 7.0 | 58 |
delete |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
direction |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
key |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
primaryKey |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
request |
76 | 79 | 77 | 63 | 15 | 76 | 79 | 54 | 15 | 12.0 | 76 |
source |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
update |
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 - Пример ссылки: Уведомления задач (просмотреть пример онлайн).
© 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/IDBCursor