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 vautnull
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 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
BCD tables only load in the browser
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)