Ștergerea datelor din depozit
Pentru ștergerea datelor din depozit în IndexDB se utilizează metodele delete() și clear() ale obiectului IDBObjectStore.
Metoda delete() șterge toate obiectele după cheile specificate care sunt transmise ca parametru.
delete(key)
Ca valoare a parametrului se poate transmite o valoare specifică sau un interval de chei sub forma unui obiect IDBKeyRange.
Această metodă returnează un obiect IDBRequest. Dacă metoda se execută cu succes pentru obiectul IDBRequest se generează evenimentul success, iar proprietatea sa result conține valoarea undefined. În cazul apariției unei erori la obiectul IDBRequest, se declanșează evenimentul error, iar proprietatea sa error conține informații despre eroare. Pentru a gestiona aceste evenimente se pot folosi respectiv proprietățile onsuccess și onerror.
De exemplu să ștergem obiectul cu cheia egală cu 1:
const request = indexedDB.open("test", 5) // ne conectăm la baza de date test
request.onupgradeneeded = (event) => {
const db = event.target.result
db.createObjectStore("users", { keyPath: "id", autoIncrement: true })
userStore.add({name: "Tom", age: 39})
userStore.add({name: "Bob", age: 43})
userStore.add({name: "Sam", age: 28})
}
request.onsuccess = (event) => {
const db = event.target.result
const transaction = db.transaction(["users"], "readwrite")
const userStore = transaction.objectStore("users")
const deleteRequest = userStore.delete(1)
deleteRequest.onsuccess = () => console.log("Successfully deleted")
deleteRequest.onerror = () => console.log(deleteRequest.error)
}
Pentru crearea unui interval de chei se utilizează următoarele metode statice ale interfeței IDBKeyRange:
- IDBKeyRange.bound() creează un interval de chei cu valorile minimă și maximă specificate
- IDBKeyRange.only() creează un interval de chei care conține doar o valoare specifică
- IDBKeyRange.lowerBound() creează un interval de chei cu o valoare minimă specificată
- IDBKeyRange.upperBound() creează un interval de chei cu o valoare maximă specificată
Intervalele de chei create prin aceste metode pot fi descrise în tabelul următor:

De exemplu, pentru a șterge toate obiectele ale căror valoare a cheii nu este mai mare de 2:
const deleteRequest = userStore.delete(IDBKeyRange.upperBound(2));
deleteRequest.onsuccess = () => console.log("Successfully deleted");
Ștergerea tuturor datelor
Pentru ștergerea absolut tuturor datelor din depozitul bazei de date se aplică metoda clear(). Aceasta nu acceptă niciun parametru și returnează un obiect IDBRequest. La executarea cu succes proprietatea result a IDBRequest este de asemenea egală cu undefined
const deleteRequest = userStore.clear()
deleteRequest.onsuccess = () => console.log("Successfully deleted")