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


```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 with JavaScript enabled. Enable JavaScript to view data.

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)