Removendo Registros do Armazenamento IndexedDB - JavaScript
No IndexedDB, a remoção de dados de um armazenamento pode ser feita utilizando os métodos delete()
clear()
IDBObjectStore
Remoção com o Método delete()
O método delete()
Sintaxe:
delete(key)
delete(IDBKeyRange)
O parâmetro key
Um valor único de chave.
Um intervalo de chaves definido por um objeto
.IDBKeyRange
O método delete()
IDBRequest
success: Indica que a remoção foi bem-sucedida, com o atributo
do objetoresult
retornandoIDBRequest
.undefined
error: Indica que ocorreu um erro, com o atributo
do objetoerror
contendo detalhes sobre o problema.IDBRequest
Os eventos podem ser tratados por meio das propriedades onsuccess
onerror
O exemplo a seguir demonstra como remover um registro cuja chave seja igual a 1
const request = indexedDB.open("test", 5); // Abre ou cria o banco de dados "test"
// Durante a criação ou atualização do banco de dados, configura o armazenamento "users"
request.onupgradeneeded = (event) => {
const db = event.target.result; // Obtém a instância do banco de dados
// Cria o armazenamento "users" com chave primária "id" e incremento automático
const userStore = db.createObjectStore("users", { keyPath: "id", autoIncrement: true });
// Adiciona registros iniciais
userStore.add({ name: "Tom", age: 39 });
userStore.add({ name: "Bob", age: 43 });
userStore.add({ name: "Sam", age: 28 });
};
// Após abrir o banco de dados, remove o registro cuja chave seja 1
request.onsuccess = (event) => {
const db = event.target.result; // Obtém a instância do banco de dados
const transaction = db.transaction(["users"], "readwrite"); // Cria uma transação de leitura e escrita
const userStore = transaction.objectStore("users"); // Obtém o armazenamento "users"
// Remove o registro com chave igual a 1
const deleteRequest = userStore.delete(1);
// Trata o sucesso ou erro da remoção
deleteRequest.onsuccess = () => console.log("Registro removido com sucesso");
deleteRequest.onerror = () => console.error("Erro ao remover registro:", deleteRequest.error);
};
IDBKeyRange
A interface IDBKeyRange
: Cria um intervalo com limites inferior e superiorIDBKeyRange.bound()
: Cria um intervalo que contém apenas um valorIDBKeyRange.only()
: Cria um intervalo com um limite inferiorIDBKeyRange.lowerBound()
: Cria um intervalo com um limite superiorIDBKeyRange.upperBound()
Tabela de Intervalos de Chaves
Intervalo | Código | Descrição |
---|---|---|
>= x | IDBKeyRange.lowerBound(x) | Valores de chave maiores ou iguais a x |
> x | IDBKeyRange.lowerBound(x, true) | Valores de chave maiores que x |
<= y | IDBKeyRange.upperBound(y) | Valores de chave menores ou iguais a y |
< y | IDBKeyRange.upperBound(y, true) | Valores de chave menores que y |
>= x && <= y | IDBKeyRange.bound(x, y) | Valores entre x y |
> x && < y | IDBKeyRange.bound(x, y, true, true) | Valores entre x y |
> x && <= y | IDBKeyRange.bound(x, y, true, false) | Valores maiores que x y |
>= x && < y | IDBKeyRange.bound(x, y, false, true) | Valores maiores ou iguais a x y |
= z | IDBKeyRange.only(z) | Valores iguais a z |
No exemplo abaixo, removemos todos os registros cuja chave seja menor ou igual a 2
const deleteRequest = userStore.delete(IDBKeyRange.upperBound(2));
deleteRequest.onsuccess = () => console.log("Registros removidos com sucesso");
deleteRequest.onerror = () => console.error("Erro ao remover registros:", deleteRequest.error);
Remoção de Todos os Dados com o Método clear()
O método clear()
Retorno:
success: Indica que todos os registros foram removidos com sucesso, com o atributo
do objetoresult
retornandoIDBRequest
.undefined
error: Indica que ocorreu um erro, com o atributo
do objetoerror
fornecendo detalhes sobre o problema.IDBRequest
O exemplo a seguir demonstra como remover todos os registros do armazenamento users
const clearRequest = userStore.clear();
clearRequest.onsuccess = () => console.log("Todos os registros foram removidos com sucesso");
clearRequest.onerror = () => console.error("Erro ao remover registros:", clearRequest.error);