--- title: IDBIndex slug: Web/API/IDBIndex tags: - API - Database - IDBIndex - IndexedDB - Interface - Reference - Storage - TopicStub translation_of: Web/API/IDBIndex ---
{{APIRef("IndexedDB")}}
L'interface IDBIndex
de l'{{domxref("IndexedDB_API","API IndexedDB")}} est un accès à un index d'un magasins d'objet. Un index permet de trier les enregistrements d'un magasin d'objet sur une autre clé que la clé primaire.
Un index contient des enregistrements persistent. Chaque enregistrement est composé d'une clé ( la valeur du chemin de clé) et d'une valeur (la clé primaire de l'enregistrement dans le magasin d'objet). Les enregistrements de l'index se mettent automatiquement à jour lorsque un enregistrement du magasin d'objet est ajouté , mise à jour ou supprimé. Chaque enregistrement de l'index ne peut référer qu'a un enregistrement du magasin d'objet. Un magasin d'objet peut avoir plusieurs index et lorsque le magasin d'objet change tout les index sont mis à jour automatiquement.
On peut retrouver les enregistrement sur une partie des clés, voir {{domxref("IDBKeyRange","intervalle de clé")}}.
{{AvailableInWorkers}}
Hérite de: EventTarget
locale
à été paramétré sur auto
lors de la mise en place de l'index (voir les paramètres {{domxref("IDBObjectStore.createIndex")}}
).en-US
) si la localisation à été spécifie lors de la mise en place de l'index
(voir les paramètres {{domxref("IDBObjectStore.createIndex")}}).null
.Dans l'exemple suivant on ouvre une transaction puis un magasin d'objet et enfin l'index lName
.
Finalement, On itère sur tous les enregistrements pour en insérer les données dans un tableau HTML. En utilisant la méthode {{domxref("IDBIndex.openCursor")}} qui travaille de la même façon que la méthode {{domxref("IDBObjectStore.openCursor")}} de l'{{domxref("IDBObjectStore","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'); //un curseur qui itère sur l'index var request = myIndex.openCursor(); request.onsuccess = function(event) { var cursor = request.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 | Statut | Commentaire |
---|---|---|
{{SpecName('IndexedDB', '#idl-def-IDBIndex', 'IDBIndex')}} | {{Spec2('IndexedDB')}} |
{{ CompatibilityTable() }}
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support basique | {{CompatChrome(23.0)}}{{property_prefix("webkit")}} {{CompatChrome(24.0)}} |
10 {{property_prefix("moz")}} {{CompatGeckoDesktop("16.0")}} |
10, en partie | 15 | 7.1 |
count() |
{{CompatChrome(23.0)}} | {{ CompatGeckoDesktop("22.0") }} | 10, en partie | 15 | 7.1 |
getAll() et getAllKeys() |
{{CompatChrome(48.0)}} | {{ CompatGeckoDesktop("24.0") }} behind dom.indexedDB.experimental pref |
{{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} |
Disponible dans workers | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("37.0")}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
isAutoLocale et locale |
{{ CompatNo() }} |
{{CompatGeckoDesktop("43.0")}} |
{{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} |
Fonctionnalité | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Support basique | 4.4 | {{CompatVersionUnknown}} | {{ CompatGeckoMobile("22.0") }} | 1.0.1 | 10 | 22 | {{ CompatNo() }} | {{CompatVersionUnknown}} |
count() |
4.4 | {{CompatVersionUnknown}} | {{ CompatGeckoMobile("22.0") }} | 1.0.1 | 10 | 22 | {{ CompatNo() }} | {{CompatVersionUnknown}} |
getAll() et getAllKeys() |
{{ CompatNo() }} | {{CompatChrome(48.0)}} | {{ CompatGeckoMobile("24.0") }} avec dom.indexedDB.experimental activer |
1.1 avecdom.indexedDB.experimental avtivé |
{{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} | {{CompatChrome(48.0)}} |
Disponible dans workers | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("37.0")}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} |
isAutoLocale et locale |
{{ CompatNo() }} | {{ CompatNo()}} | {{CompatGeckoMobile("43.0")}} avec dom.indexedDB.experimental activé |
2.5 avec dom.indexedDB.experimental activé |
{{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} |