La méthode count()
, rattachée à l'interface IDBIndex
, renvoie un objet IDBRequest
et, dans un thread séparé, renvoie le nombre d'enregistrements contenu dans un intervalle de clé.
Syntaxe
var request = monIndex.count(); var request = monIndex.count(cle);
Paramètres
cle
Facultatif- La clé ou l'intervalle de clé qui définit les enregistrements qu'on souhaite compter.
Valeur de retour
Un objet IDBRequest
sur lequel seront déclenchés les différents évènements relatifs à l'opération.
Exceptions
Cette méthode peut déclencher différents types d'exceptions :
Exception | Description |
---|---|
TransactionInactiveError |
La transaction associée à cet index est inactive. |
DataError |
La clé ou l'intervalle de clé fourni possède une clé invalide. |
InvalidStateError |
L'index a été supprimé ou retiré. |
Exemples
Dans l'exemple qui suit, on ouvre une transaction et un magasin d'objets puis on récupère l'index lName
depuis une base de données de contacts. Ensuite, on ouvre un curseur simple sur cet index grâce à la méthode IDBIndex.openCursor
(ce qui fonctionne comme si on ouvrait un curseur sur le magasin d'objets avec IDBObjectStore.openCursor
sauf que les enregistrements sont ici triés selon l'index plutôt que selon la clé primaire).
myIndex.count()
est alors utilisé afin de compter le nombre d'enregistrements dans l'index et le résultat de la requête est affiché dans la console au travers du gestionnaire d'évènements pour la réussite (onsuccess
).
Efin, on parcourt chaque enregistrement pour l'insérer dans un tableau HTML. Pour consulter un exemple fonctionnel complet, vous pouvez vous référer à notre dépôt IDBIndex-example (cf. la démonstration live).
function displayDataByIndex() {
tableEntry.innerHTML = '';
var transaction = db.transaction(['contactsList'], 'readonly');
var objectStore = transaction.objectStore('contactsList');
var myIndex = objectStore.index('lName');
var countRequest = myIndex.count();
countRequest.onsuccess = function() {
console.log(countRequest.result);
}
myIndex.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if(cursor) {
var tableRow = document.createElement('tr');
tableRow.innerHTML = '<td>' + cursor.value.id + '</td>'
+ '<td>' + cursor.value.lName + '</td>'
+ '<td>' + cursor.value.fName + '</td>'
+ '<td>' + cursor.value.jTitle + '</td>'
+ '<td>' + cursor.value.company + '</td>'
+ '<td>' + cursor.value.eMail + '</td>'
+ '<td>' + cursor.value.phone + '</td>'
+ '<td>' + cursor.value.age + '</td>';
tableEntry.appendChild(tableRow);
cursor.continue();
} else {
console.log('Éléments affichés.');
}
};
};
Spécifications
Spécification | État | Commentaires |
---|---|---|
Indexed Database API La définition de 'count()' dans cette spécification. |
Recommendation | |
Indexed Database API 2.0 La définition de 'count()' dans cette spécification. |
Recommendation |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Support simple | 23webkit 24 (sans préfixe) |
(Oui) | 10 moz 16.0 (16.0) |
10, partial | 15 | 7.1 |
Disponible dans les web workers | (Oui) | (Oui) | 37.0 (37.0) | ? | (Oui) | ? |
Fonctionnalité | Android | Webview Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome pour Android |
---|---|---|---|---|---|---|---|---|
Support simple | 4.4 | (Oui) | (Oui) | 22.0 (22.0) | 10 | 22 | 8 | (Oui) |
Disponible dans les web workers | (Oui) | (Oui) | (Oui) | 37.0 (37.0) | ? | (Oui) | ? | (Oui) |
Voir aussi
- Manipuler IndexedDB
- Démarrer des transactions :
IDBDatabase
- Manipuler des transactions :
IDBTransaction
- Définir un intervalle de clés :
IDBKeyRange
- Récupérer des données et les modifier :
IDBObjectStore
- Manipuler des curseurs :
IDBCursor
- Exemple de référence pour IndexedDB : To-do Notifications