IDBIndex.getKey()
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
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
keyFacultatif-
Une clé ou un intervalle
IDBKeyRangequi identifie l'enregistrement dont on souhaite obtenir la clé. Si la valeur vautnullou 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 indexeddb-examples contient un exemple complet (voir l'exemple en direct).
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écifications
| Specification |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbindex-getkey①> |
Compatibilité des navigateurs
Chargement…
Voir aussi
- Utiliser IndexedDB
- Initier une connexion :
IDBDatabase - Utiliser les transactions :
IDBTransaction - Définir un intervalle de clés :
IDBKeyRange - Récupérer et modifier les données :
IDBObjectStore - Utiliser les curseurs
IDBCursor - L'exemple de référence : notifications de trucs à faire (voir la démonstration)