--- title: IDBIndex.getKey() slug: Web/API/IDBIndex/getKey tags: - API - IDBIndex - IndexedDB - Méthode - Reference translation_of: Web/API/IDBIndex/getKey ---
La méthode getKey()
, rattachée à l'interface {{domxref("IDBIndex")}}, renvoie un objet {{domxref("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 {{domxref("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 {{domxref("IDBIndex.get")}}).
{{AvailableInWorkers}}
var myIndex = objectStore.index('index'); var request = myIndex.getKey(key);
key
{{optional_inline}}Un objet {{domxref("IDBRequest")}} qui recevra les différents évènements relatifs à l'opération qui est déclenchée.
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é. |
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 {{domxref("IDBIndex.openCursor")}} (cela fonctionne de la même façon que {{domxref("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 | État | Commentaires |
---|---|---|
{{SpecName('IndexedDB', '#widl-IDBIndex-getKey-IDBRequest-any-key', 'getKey()')}} | {{Spec2('IndexedDB')}} |
{{Compat("api.IDBIndex.getKey")}}