Atualizando Registros no Armazenamento com IndexedDB - JavaScript
O método put()
IDBObjectStore
put(item);
put(item, key);
O primeiro parâmetro, item
O primeiro parâmetro, item
key
O método put()
IDBRequest
success
IDBRequest
result
error
DOMException
onsuccess
onerror
Considere um armazenamento chamado users
test
[
{ 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
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}`);
};