IDBObjectStore.index()

La méthode index(), rattachée à l'interface IDBObjectStore, permet d'ouvrir un index sur le magasin d'objet courant pour, par exemple, renvoyer une liste d'enregistrements triés par cet index grâce à un curseur.

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

Syntaxe

objectStore.index(nomIndex);

Paramètres

nomIndex
Le nom de l'index qu'on souhaite ouvrir.

Valeur de retour

Un objet IDBIndex qui permet d'accéder à l'index.

Exceptions

Cette méthode peut déclencher une exception DOMException ayant l'un des types suivants :

Exception Description
InvalidStateError L'objet correspondant au magasin d'objet a été supprimé ou la transaction a été clôturée.
NotFoundError Il n'existe pas d'index pour ce nom dans la base de données (la recherche est sensible à la casse).

Exemples

Dans l'exemple qui suit, on ouvre une transaction sur un magasin d'objet et on accède à l'index lName de la base de données. Ensuite, on ouvre un curseur sur l'index grâce à la méthode IDBIndex.openCursor — cela fonctionne de la même façon que d'ouvrir un curseur à même le magasin d'objet grâce à IDBObjectStore.openCursor sauf que, cette fois, les enregistrements sont renvoyés triés selon l'index et non selon la clé primaire.

Enfin, on parcourt chaque enregistrement pour l'ajouter dans un tableau HTML.

function displayDataByIndex() {
  tableEntry.innerHTML = '';
  var transaction = db.transaction(['contactsList'], 'readonly');
  var objectStore = transaction.objectStore('contactsList');

  var myIndex = objectStore.index('lName'); 
  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.');    
    }
  };
};

Note : pour un exemple fonctionnel complet, voir notre exemple sur GitHub (la démonstration associée).

Spécifications

Spécification État Commentaires
Indexed Database API
La définition de 'index()' dans cette spécification.
Recommendation  

Compatibilité des navigateurs

Fonctionnalité Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support simple 23webkit
24
(Oui) 10 moz
16.0 (16.0)
10, partial 15 7.1
Disponible dans les web workers (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) ? 37.0 (37.0) ? (Oui) ? (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

 Dernière mise à jour par : SphinxKnight,