IDBIndex.getKey()

Cet article nécessite une relecture technique. Voici comment vous pouvez aider.

Cet article nécessite une relecture rédactionnelle. Voici comment vous pouvez aider.

La mèthode getKey() de l'interface IDBIndex interface fait une requête pour renvoyer la clé primaire correspondant à la clé ou à l'intervale de clé de l'index. Si une clé est trouvé le résultat de la requête contiendra seulement la clé primaire de l'enregistrement et non l'enregistrement comme le fait IDBIndex.get.

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

Syntaxe

var request = myIndex.getKey(key);

Paramètre

key
la clé ou l'intervalle de clé de l'enregistrement dont on cherche la clé primaire.

Renvoie

Une requête
La propriété result de cette requête renvoie en cas de succès la clé primaire de l'enregistrement correspondant à la clé ou du premier correspondant à l'intervalle de clé.

Exceptions

TransactionInactiveError
Cette exception est levé si la transaction dont dépend cet accès à l'index est inactive.
DataError
Cette exception est levé si la clé ou l'intervalle de clé est invalide.
InvalidStateError
Cette exception est levé si l'index à été supprimé.

Exemple

Dans l'exemple suivant on ouvre une transaction puis un magasin d'objet et enfin l'index lName.

La méthode myIndex.getKey('Bungle') est utilisé ici pour retrouver la clé primaire de l'enregistrement dont le lName est Bungle puis on l'affiche sur la console.

Finalement, On itère sur tous les enregistrements pour en insérer les données dans un tableau HTML. En utilisant la méthode IDBIndex.openCursor qui travaille de la même façon que la méthode IDBObjectStore.openCursor de l'accès au magasin d'objet sauf que les enregistrements sont renvoyés dans l'ordre de l'index et non celui du magasin d'objet.

function displayDataByIndex() {
  tableEntry.innerHTML = '';
  
  //ouvre un transaction
  var transaction = db.transaction(['contactsList'], 'readonly');
  //accés au magasin d'objet
  var objectStore = transaction.objectStore('contactsList');
  
  //on récupère l'index
  var myIndex = objectStore.index('lName');
  //requête qui cherche la clé
  var getKeyRequest = myIndex.getKey('Bungle');
  //en cas de succès
  getKeyRequest.onsuccess = function() {
  //on affiche la clé sur la console
    console.log(getKeyRequest.result);
  } 

  //un curseur qui itère sur l'index
  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('Tous les enregistrements ont été affichés.');    
    }
  };
};

Pour un exemple de travail complet, voir notre To-do Notifications app (view example live).

Spécification

Spécification Statut Commentaire
Indexed Database API
La définition de 'getKey()' dans cette spécification.
Recommendation  

Compatibilité avec les navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support basique 23webkit
24
10 moz
16.0 (16.0)
10, en partie 15 7.1
Disponible dans workers (Oui) 37.0 (37.0) ? (Oui) ?
Fonctionnalité Android Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Support basique 4.4 22.0 (22.0) 1.0.1 10 22 8
Disponible dans workers (Oui) 37.0 (37.0) (Oui) ? (Oui) ?

Voir aussi

Étiquettes et contributeurs liés au document

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