Atualizado: 21/06/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Atualizando Registros com o IndexedDB em JavaScript

O método put() da interface IDBObjectStore é utilizado para atualizar um registro existente no banco de dados ou inserir um novo registro caso ele ainda não exista.

put(item);
put(item, key);

O primeiro parâmetro, item, representa o valor a ser atualizado ou adicionado no banco de dados. O segundo parâmetro, opcional, key, indica a chave pela qual o registro será atualizado ou adicionado.

O método put() retorna um objeto do tipo IDBRequest. Em caso de sucesso na atualização ou adição, o evento success é disparado no objeto IDBRequest, e a propriedade result conterá o registro associado à chave especificada. Em caso de erro, o evento error será disparado, acompanhado por uma exceção do tipo DOMException. Para tratar esses eventos, podem ser utilizados os manipuladores onsuccess e onerror, respectivamente.

Considere um armazenamento chamado users no banco de dados test, contendo os seguintes registros:

[
  { name: "Tom", age: 39, id: 1 },
  { name: "Bob", age: 43, id: 2 },
  { name: "Sam", age: 28, id: 3 },
];

A seguir, veremos como atualizar o registro com a chave 1 no armazenamento users:

const request = indexedDB.open("test", 5); // Conecta ao banco de dados 'test'

// Criação ou atualização da estrutura do banco de dados
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 autoincremento
  db.createObjectStore("users", { keyPath: "id", autoIncrement: true });
};

// Operações após o banco de dados ser aberto com sucesso
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'

  // Busca o registro com id = 1
  const getRequest = userStore.get(1);

  getRequest.onsuccess = () => {
    const user = getRequest.result;
    console.log(user); // Exibe o registro original no console

    // Modifica as propriedades do registro
    user.name = "Tomas";
    user.age = 22;

    // Atualiza o registro no armazenamento
    const updateRequest = userStore.put(user);

    updateRequest.onsuccess = () => console.log("Registro atualizado com sucesso");
    updateRequest.onerror = (e) => console.log(`Erro ao atualizar: ${e.target.error.message}`);
  };

  getRequest.onerror = (e) => console.log(`Erro ao buscar registro: ${e.target.error.message}`);
};

Documentação oficial:

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