MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

IDBIndex.count()

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é.

Note : Cette fonctionnalité est disponible via les Web Workers.

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.
Brouillon de l'éditeur  

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

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, gadgino
 Dernière mise à jour par : SphinxKnight,