Ce face indexedDB.open
IndexedDB este o bază de date de tip cheie–valoare din browser: păstrează obiecte JavaScript întregi (nu doar texte, ca localStorage), are indexuri pentru căutare și poate stoca sute de MB. API-ul este asincron, bazat pe cereri și evenimente.
indexedDB.open(nume, versiune) deschide baza. Dacă versiunea este mai mare decât cea existentă, rulează întâi evenimentul upgradeneeded, unde creezi „depozitele” (createObjectStore). Datele se scriu și se citesc prin tranzacții. Multe proiecte folosesc o bibliotecă mică (de exemplu idb) care transformă cererile în promisiuni.
Parametri
| Parametru | Descriere |
|---|---|
nume |
Numele bazei de date. |
versiune |
Opțional. Un număr întreg; crește-l când schimbi structura. |
Ce returnează
O cerere (IDBOpenDBRequest); baza de date este în cerere.result la succes.
Exemple
Exemplul 1: Notițe salvate offline
Rezultat la prima rulare.
const cerere = indexedDB.open("notite", 1);
cerere.onupgradeneeded = () => {
cerere.result.createObjectStore("notite", { keyPath: "id", autoIncrement: true });
};
cerere.onsuccess = () => {
const db = cerere.result;
const tx = db.transaction("notite", "readwrite");
tx.objectStore("notite").add({ text: "Cumpără lapte", creat: new Date() });
tx.oncomplete = () => {
db.transaction("notite").objectStore("notite").getAll().onsuccess = (e) => {
console.log(e.target.result.length, e.target.result[0].text);
};
};
};
Rezultat în browser
1 Cumpără lapte
Greșeli frecvente
- Încerci să creezi un depozit nou în
onsuccessși primeștiInvalidStateError. Structura se schimbă doar înonupgradeneeded, cu o versiune mai mare.
Comenzi înrudite
localStorage: Salvează date în browserul vizitatorului, care rămân și după închiderea paginii.navigator.serviceWorker.register / caches.open: Instalează un service worker (pentru funcționare offline și notificări push) și lucrează cu cache-ul lui.structuredClone: Creează o copie completă (în adâncime) a unei valori: obiecte, tablouri, Date, Map, Set.