IDBObjectStore.get()
La méthode get()
, rattachée à l'interface IDBObjectStore
, renvoie un objet IDBRequest
et, dans un thread séparé, renvoie le magasin d'objets sélectionné avec la clé indiqué. Cette méthode est conçue pour récupérer des enregistrements spécifiques d'un magasin d'objets.
Si une valeur est trouvée, un clone structuré est créé et placé comme valeur de l'attribut result
de l'objet qui représente la requête.
Note : Cette méthode produira le même résultat si l'enregistrement n'existe pas dans la base de données ou s'il a une valeur indéfinie. Pour distinguer ces deux cas, on appellera la méthode avec la même clé : elle fournira un curseur si l'enregistrement existe et aucun curseur sinon.
Note : Cette fonctionnalité est disponible via les Web Workers.
Syntaxe
get(key);
Paramètres
key
-
La clé ou l'intervalle de clés identifiant l'enregistrement à récupérer.
Valeur de retour
Un objet IDBRequest
sur lequel les évènements ultérieurs et liés à cette opération seront déclenchés.
Exceptions
Cette méthode peut déclencher une exception DOMException
avec l'un des types suivants :
TransactionInactiveError
-
Levée si la transaction sur l'objet
IDBObjectStore
est inactive DataError
-
Levée si la clé ou l'intervalle de clés fourni contient une clé invalide.
InvalidStateError
-
Levée si le magasin d'objets
IDBObjectStore
a été supprimé ou retiré.
Exemples
Dans le fragment de code qui suit, on ouvre une transaction en lecture/écriture sur la base de données et on récupère un enregistrement particulier du magasin d'objets à l'aide de get()
(un enregistrement de test dont la clé est "Walk dog"). Une fois l'objet de données récupéré, on pourait le mettre à jour à l'aide de JavaScript, puis le replacer dans la base de données à l'aide de l'opération IDBObjectStore.put()
. Pour un exemple complet, voir notre application Notifications d'une liste de tâches (voir l'exemple qui fonctionne).
// On ouvre la base de données
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onsuccess = function (event) {
note.innerHTML += "<li>Base de données initialisée.</li>";
// On récupère le résultat de l'ouverture dans la variable db
// qui sera utilisée ensuite
db = DBOpenRequest.result;
// On exécute la fonction getData() afin de récupérer les données
// de la base
getData();
};
function getData() {
// On ouvre une transaction en lecture/écriture
// pour récupérer des données
const transaction = db.transaction(["toDoList"], "readwrite");
// On indique le succès ou l'échec de l'opération
transaction.oncomplete = function (event) {
note.innerHTML += "<li>Transaction terminée.</li>";
};
transaction.onerror = function (event) {
note.innerHTML +=
"<li>Transaction non ouverte pour cause d'erreur : " +
transaction.error +
"</li>";
};
// On crée un magasin d'objets sur la transaction
const objectStore = transaction.objectStore("toDoList");
// On lance une requête afin d'obtenir un enregistrement
// à partir de la clé dans le magasin d'objets
const objectStoreRequest = objectStore.get("Walk dog");
objectStoreRequest.onsuccess = function (event) {
// On indique que la requête a réussi
note.innerHTML += "<li>Requête réussie.</li>";
const myRecord = objectStoreRequest.result;
};
}
Spécifications
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbobjectstore-get① |
Compatibilité des navigateurs
BCD tables only load in the browser
Voir aussi
- Utiliser l'API IndexedDB
- Initier des transactions :
IDBDatabase
- Utiliser des transactions :
IDBTransaction
- Définir un intervalle de clés :
IDBKeyRange
- Récupérer et modifier les données :
IDBObjectStore
- Utiliser les curseurs :
IDBCursor
- Exemples : Notifications d'une liste de tâches (voir l'exemple qui fonctionne)