MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Actualizarea obiectelor din depozit

Metoda put() a interfeței IDBObjectStore actualizează o înregistrare în baza de date sau inserează o nouă înregistrare, dacă elementul dat încă nu există.

put(item)
put(item, key)

Primul parametru - item reprezintă valoarea care este actualizată sau adăugată în baza de date. Al doilea parametru, opțional, key reprezintă cheia după care trebuie să actualizeze/adauge obiectul.

Metoda put() returnează un obiect IDBRequest. În cazul unei actualizări/adaugări de succes, la obiectul IDBRequest se declanșează evenimentul success, iar proprietatea sa result va conține obiectul cu cheia specificată. În caz de eroare, se generează evenimentul error împreună cu o excepție de tip DOMException. Pentru a gestiona aceste evenimente, se pot folosi, respectiv, proprietățile onsuccess și onerror.

De exemplu, să presupunem că depozitul users în baza de date test conține următoarele obiecte:

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

De exemplu, să actualizăm obiectul din depozitul "users", care are cheia egală cu 1:

const request = indexedDB.open("test", 5); // ne conectăm la baza de date test

// la crearea sau modificarea versiunii bazei de date, creăm în ea un depozit users
request.onupgradeneeded = (event) => {
   const db = event.target.result;  // obținem baza de date
   // cheia este proprietatea id, și este autoincrementată
   db.createObjectStore("users", { keyPath: "id", autoIncrement: true });
};
// la deschiderea bazei de date modificăm în depozitul users 1 obiect
request.onsuccess = (event) => {
   const db = event.target.result;  // obținem baza de date
   const transaction = db.transaction(["users"], "readwrite"); // creăm o tranzacție
   const userStore = transaction.objectStore("users");   // obținem depozitul users
   // obținem obiectul cu id=1
   const getRequest = userStore.get(1);  
   getRequest.onsuccess = () => {
       const user = getRequest.result;
       console.log(user);
       // schimbăm valorile proprietăților
       user.name = "Tomas";
       user.age = 22;
       // actualizăm valorile
       const updateRequest = userStore.put(user);
       updateRequest.onsuccess = () =>  console.log("Data successfully updated");
   };
   getRequest.onerror = (e) =>  console.log(e.target.error.message); // afișăm mesajul de eroare
};
← Lecția anterioară Lecția următoare →