--- title: IDBIndex.get() slug: Web/API/IDBIndex/get translation_of: Web/API/IDBIndex/get ---
{{ APIRef("IndexedDB") }}
La méthode get()
de l'interface {{domxref("IDBIndex")}} fait une requête ({{domxref("IDBRequest")}}) pour renvoyer le premier enregistrement correspondant à la clé ou l'intervalle de clé {{domxref("IDBKeyRange","")}} du magasin d'objet suivant l'index.
{{AvailableInWorkers}}
var request = myIndex.get(key);
key
TransactionInactiveError
DataError
InvalidStateError
Dans l'exemple suivant on ouvre une transaction puis un magasin d'objet et enfin l'index lName
.
Le code myIndex.get('Bungle')
renvoie une requête qui cherche sur l'index un enregistrement dont la clé lName
est Bungle
. En cas de sucés le résultat de la requête qui contient l'enregistrement est affiché 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 {{domxref("IDBIndex.openCursor")}} qui travaille de la même façon que la méthode {{domxref("IDBObjectStore.openCursor")}} de l'accès ({{domxref("IDBObjectStore")}}) 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 de recherche var getRequest = myIndex.get('Bungle'); //en cas de succès getRequest.onsuccess = function() { console.log(getRequest.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 | Ètat | Commentaires |
---|---|---|
{{SpecName('IndexedDB', '#widl-IDBIndex-get-IDBRequest-any-key', 'get()')}} | {{Spec2('IndexedDB')}} |
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support simple | 23{{property_prefix("webkit")}} 24 |
10 {{property_prefix("moz")}} {{CompatGeckoDesktop("16.0")}} |
10, en partie | 15 | 7.1 |
Disponible dans workers | {{CompatVersionUnknown}} | {{CompatGeckoMobile("37.0")}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
Fonctionnalité | Android | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | 4.4 | {{CompatGeckoMobile("22.0")}} | 1.0.1 | 10 | 22 | 8 |
Disponible dans workers | {{CompatVersionUnknown}} | {{CompatGeckoMobile("37.0")}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |