Atualizado: 07/12/2024

Removendo Registros do Armazenamento IndexedDB - JavaScript

No IndexedDB, a remoção de dados de um armazenamento pode ser feita utilizando os métodos delete() e clear() da interface IDBObjectStore.

Remoção com o Método delete()

O método delete() remove registros específicos com base em uma chave fornecida ou em um intervalo de chaves.

Sintaxe:

delete(key)
delete(IDBKeyRange)

O parâmetro key pode ser:

  • Um valor único de chave.

  • Um intervalo de chaves definido por um objeto IDBKeyRange.

O método delete() retorna um objeto IDBRequest. Dependendo do resultado da operação, os seguintes eventos podem ser disparados:

  • success: Indica que a remoção foi bem-sucedida, com o atributo result do objeto IDBRequest retornando undefined.

  • error: Indica que ocorreu um erro, com o atributo error do objeto IDBRequest contendo detalhes sobre o problema.

Os eventos podem ser tratados por meio das propriedades onsuccess e 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 fornece métodos para definir intervalos de chaves, permitindo remover múltiplos registros com base em condições específicas.

  • IDBKeyRange.bound(): Cria um intervalo com limites inferior e superior

  • IDBKeyRange.only(): Cria um intervalo que contém apenas um valor

  • IDBKeyRange.lowerBound(): Cria um intervalo com um limite inferior

  • IDBKeyRange.upperBound(): Cria um intervalo com um limite superior

Tabela de Intervalos de Chaves

IntervaloCódigoDescrição
>= xIDBKeyRange.lowerBound(x) Valores de chave maiores ou iguais a x.
> xIDBKeyRange.lowerBound(x, true) Valores de chave maiores que x.
<= yIDBKeyRange.upperBound(y) Valores de chave menores ou iguais a y.
< yIDBKeyRange.upperBound(y, true) Valores de chave menores que y.
>= x && <= yIDBKeyRange.bound(x, y) Valores entre x e y, inclusivos.
> x && < yIDBKeyRange.bound(x, y, true, true) Valores entre x e y, exclusivos.
> x && <= yIDBKeyRange.bound(x, y, true, false) Valores maiores que x e menores ou iguais a y.
>= x && < yIDBKeyRange.bound(x, y, false, true) Valores maiores ou iguais a x e menores que y.
= zIDBKeyRange.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() remove todos os registros de um armazenamento. Ele não aceita parâmetros e é ideal para cenários em que é necessário limpar completamente o armazenamento.

Retorno:

  • success: Indica que todos os registros foram removidos com sucesso, com o atributo result do objeto IDBRequest retornando undefined.

  • error: Indica que ocorreu um erro, com o atributo error do objeto IDBRequest fornecendo detalhes sobre o problema.

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);
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com