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

IDBIndex.getKey()

La méthode getKey(), rattachée à l'interface IDBIndex, renvoie un objet IDBRequest et, dans un thread séparé, récupère la clé associée ou la clé primaire si l'argument passé à la fonction est un intervalle IDBKeyRange.

Si la méthode trouve une clé, ce sera alors la propriété result de la requête renvoyée. Seule la clé primaire de l'enregistrement est renvoyée (pour obtenir l'ensemble de l'enregistrement, on utilisera IDBIndex.get).

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

Syntaxe

var myIndex = objectStore.index('index');
var request = myIndex.getKey(key);

Paramètres

key Facultatif
Une clé ou un intervalle IDBKeyRange qui identifie l'enregistrement dont on souhaite obtenir la clé. Si la valeur vaut null ou si elle est absente, le navigateur utilisera un intervalle de clé sans limite.

Valeur de retour

Un objet IDBRequest qui recevra les différents évènements relatifs à l'opération qui est déclenchée.

Exceptions

Cette méthode peut déclencher une exception. Celle-ci peut avoir l'un des types suivants :

Exception Description
TransactionInactiveError La transaction rattachée à cet IDBIndex est inactive.
DataError

La clé ou l'intervalle de clés qui est fourni contient une clé invalide.

InvalidStateError L'index a été supprimé ou déplacé.

Exemples

Dans l'exemple qui suit, on ouvre une transaction et un magasin d'objets. Ensuite on récupère l'index lName sur cette base de donnée. On ouvre alors un curseur sur l'index grâce à la méthode IDBIndex.openCursor (cela fonctionne de la même façon que IDBObjectStore.openCursor sauf que les enregistrements sont triés selon l'index et pas selon la clé primaire).

myIndex.getKey('Bungle') est ensuite utilisé afin d'obtenir la clé primaire de l'enregistrement pour lequel lName vaut Bungle. Le résultat de cette requête est imprimé dans la console lorsque la fonction de rappel (callback) de succès est déclenché.

Enfin, on parcourt les enregistrements pour remplir un tableau HTML. Le dépôt IDBIndex-example contient un exemple complet (ainsi qu'une démonstration).

function displayDataByIndex() {
  tableEntry.innerHTML = '';
  var transaction = db.transaction(['contactsList'], 'readonly');
  var objectStore = transaction.objectStore('contactsList');
  var myIndex = objectStore.index('lName');
  var getKeyRequest = myIndex.getKey('Bungle');
  getKeyRequest.onsuccess = function() {
    console.log(getKeyRequest.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('Les éléments sont affichés.');
    }
  };
};

Spécification

Spécification État Commentaires
Indexed Database API
La définition de 'getKey()' 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) (Oui) 37.0 (37.0) ? (Oui) ?
Fonctionnalité Android Webview Android Edge Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile Chrome pour Android
Support simple 4.4 (Oui) (Oui) 22.0 (22.0) 1.0.1 10 22 8 (Oui)
Disponible dans les web workers (Oui) (Oui) (Oui) 37.0 (37.0) (Oui) ? (Oui) ? (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

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