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
.
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 latransaction
dont dépend cetaccè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) | ? |