Obținerea numărului de obiecte
Pentru a obține numărul de date stocate în depozitul bazei de date în IndexDB se aplică metoda count() a interfeței IDBObjectStore
count()
count(query)
Dacă parametrul nu este transmis, metoda returnează numărul total de înregistrări ale depozitului.
Această metodă returnează un obiect IDBRequest. Dacă metoda se execută cu succes, pentru obiectul IDBRequest se generează evenimentul success, iar proprietatea sa result conține numărul de obiecte ale depozitului. În cazul apariției unei erori, la obiectul IDBRequest se declanșează evenimentul error, iar proprietatea sa error conține informații despre eroare. Pentru a gestiona aceste evenimente, se pot folosi, respectiv, proprietățile onsuccess și onerror.
De exemplu, să obținem numărul total de obiecte din depozitul users al bazei de date test:
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 })
// adăugăm date inițiale
userStore.add({name: "Tom", age: 39})
userStore.add({name: "Bob", age: 43})
userStore.add({name: "Sam", age: 28})
}
// la deschiderea bazei de date obținem numărul de obiecte
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
const countRequest = userStore.count() // obținem numărul de obiecte din baza de date
// la succes, afișăm numărul pe consolă
countRequest.onsuccess = () => console.log("Numărul de utilizatori", countRequest.result)
countRequest.onerror = () => console.log(countRequest.error.message)
}
Și consola va afișa:
Numărul de utilizatori 3
Ca parametru opțional, query în metoda count se transmite valoarea cheii sau obiectul IDBKeyRange care stabilește intervalul de chei. Utilizând parametrul count se poate stabili numărul maxim de elemente în selecție.
Pentru a crea un interval de chei se utilizează următoarele metode statice ale interfeței IDBKeyRange:
- DBKeyRange.bound() creează un interval de chei pentru care sunt stabilite valorile minimă și maximă
- IDBKeyRange.only() creează un interval de chei care conține doar o singură valoare
- IDBKeyRange.lowerBound() creează un interval de chei pentru care este stabilită valoarea minimă
- IDBKeyRange.upperBound() creează un interval de chei pentru care este stabilită valoarea maximă
Intervalele de chei create prin aceste metode pot fi descrise în următorul tabel:

De exemplu, obținem toate obiectele ale căror valoare a cheii nu este mai mare de 2:
const countRequest = userStore.count(IDBKeyRange.upperBound(2));
countRequest.onsuccess = () => console.log("Numărul de utilizatori:", countRequest.result);