IDBObjectStore.get()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

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

js
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).

js
// 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