IDBCursor: метод delete()
Базовая версия Широко доступна
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Web Workers.
Метод delete() интерфейса IDBCursor возвращает объект IDBRequest, и, в отдельном потоке, удаляет запись в позиции курсора, не изменяя положение курсора. После удаления записи значение курсора устанавливается в null.
Обратите внимание, что вы не можете вызвать delete() (или IDBCursor.update()) на курсорах, полученных из IDBIndex.openKeyCursor(). Для таких целей нужно использовать IDBIndex.openCursor().
Синтаксис
delete()
Параметры
Нет.
Возвращаемое значение
Объект IDBRequest, на котором впоследствии срабатывают события, связанные с этой операцией.
Если операция выполняется успешно, значение свойства запроса result равно undefined.
Исключения
Этот метод может вызвать исключение DOMException одного из следующих типов:
-
TransactionInactiveErrorDOMException -
Выбрасывается, если транзакция IDBCursor неактивна.
-
ReadOnlyErrorDOMException -
Выбрасывается, если режим транзакции — только для чтения.
-
InvalidStateErrorDOMException -
Выбрасывается, если курсор был создан с помощью
IDBindex.openKeyCursor, в настоящее время итерируется или пройден до конца.
Примеры
В этом простом фрагменте мы создаем транзакцию, получаем хранилище объектов, затем используем курсор для перебора всех записей в хранилище объектов. Если значение albumTitle текущего курсора равно "Grace under pressure", мы удаляем всю запись с помощью const request = cursor.delete();.
Курсору не нужно выбирать данные на основе ключа; мы можем просто получить все. Обратите также внимание, что в каждом цикле можно получить данные из текущей записи под объектом курсора с помощью cursor.value.foo. Для полного рабочего примера см. наш пример IDBCursor (Посмотреть пример онлайн).
function deleteResult() {
list.textContent = "";
const transaction = db.transaction(["rushAlbumList"], "readwrite");
const objectStore = transaction.objectStore("rushAlbumList");
objectStore.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
if (cursor.value.albumTitle === "Grace under pressure") {
const request = cursor.delete();
request.onsuccess = () => {
console.log(
"Deleted that mediocre album from 1984. Even Power windows is better.",
);
};
} else {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
list.appendChild(listItem);
}
cursor.continue();
} else {
console.log("Entries displayed.");
}
};
}
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
delete |
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/IDBCursor/delete