Obtendo a Quantidade de Registros no Armazenamento IndexedDB API - JavaScript
No IndexedDB, o método count()
IDBObjectStore
Sintaxe:
count()
count(IDBKeyRange)
Se nenhum parâmetro for fornecido, o método retorna o número total de registros no armazenamento. Quando o parâmetro é utilizado, ele pode ser um valor de chave específico ou um objeto IDBKeyRange
O método count()
IDBRequest
: Quando a operação é bem-sucedida, o atributo resuccess
sult do objeto conterá o número de registros encontrados.IDBRequest
: Quando ocorre um erro, o atributoerror
do objetoerror
fornecerá detalhes sobre o problema.IDBRequest
Para tratar esses eventos, podem ser utilizadas as propriedades onsuccess
onerror
O exemplo abaixo ilustra como obter o número total de registros em um armazenamento chamado "users"
"test"
const request = indexedDB.open("test", 5); // Abre ou cria o banco de dados "test"
// Cria o armazenamento "users" durante a configuração inicial ou atualização do banco de dados
request.onupgradeneeded = (event) => {
const db = event.target.result; // Obtém a instância do banco de dados
// Cria o armazenamento com a chave primária "id" e incremento automático
const userStore = db.createObjectStore("users", { keyPath: "id", autoIncrement: true });
// Adiciona registros iniciais
userStore.add({ name: "Tom", age: 39 });
userStore.add({ name: "Bob", age: 43 });
userStore.add({ name: "Sam", age: 28 });
};
// Após a abertura do banco de dados, obtém o número total de registros
request.onsuccess = (event) => {
const db = event.target.result; // Obtém a instância do banco de dados
const transaction = db.transaction(["users"], "readonly"); // Cria uma transação de leitura
const userStore = transaction.objectStore("users"); // Obtém o armazenamento "users"
const countRequest = userStore.count(); // Obtém a contagem total de registros
// Em caso de sucesso, exibe o número total no console
countRequest.onsuccess = () => console.log("Número de usuários:", countRequest.result);
// Em caso de erro, exibe a mensagem de erro no console
countRequest.onerror = () => console.error("Erro ao contar registros:", countRequest.error.message);
};
Saída no console:
Número de usuários: 3
Uso do Parâmetro query no Método count()
O método count()
query
Um valor de chave específico: Conta apenas registros com essa chave.
Um intervalo de chaves (
): Restringe a contagem a registros cujas chaves estejam dentro do intervalo especificado.IDBKeyRange
IDBKeyRange
A interface IDBKeyRange
: Cria um intervalo com limites inferior e superiorIDBKeyRange.bound()
: Cria um intervalo que contém apenas um valorIDBKeyRange.only()
: Cria um intervalo com um limite inferiorIDBKeyRange.lowerBound()
: Cria um intervalo com um limite superiorIDBKeyRange.upperBound()
Tabela de Intervalos de Chaves
Intervalo | Código | Descrição |
---|---|---|
>= x | IDBKeyRange.lowerBound(x) | Valores de chave maiores ou iguais a x |
> x | IDBKeyRange.lowerBound(x, true) | Valores de chave maiores que x |
<= y | IDBKeyRange.upperBound(y) | Valores de chave menores ou iguais a y |
< y | IDBKeyRange.upperBound(y, true) | Valores de chave menores que y |
>= x && <= y | IDBKeyRange.bound(x, y) | Valores entre x y |
> x && < y | IDBKeyRange.bound(x, y, true, true) | Valores entre x y |
> x && <= y | IDBKeyRange.bound(x, y, true, false) | Valores maiores que x y |
>= x && < y | IDBKeyRange.bound(x, y, false, true) | Valores maiores ou iguais a x y |
= z | IDBKeyRange.only(z) | Valores iguais a z |
No exemplo abaixo, contamos os registros onde a chave é menor ou igual a 2:
const countRequest = userStore.count(IDBKeyRange.upperBound(2));
countRequest.onsuccess = () =>
console.log("Número de usuários com chave <= 2:", countRequest.result);
countRequest.onerror = () =>
console.error("Erro ao contar registros:", countRequest.error.message);
Neste caso, o intervalo é definido pelo método IDBKeyRange.upperBound(2)
2