IDBObjectStore.delete()
=======================

La méthode **`delete()`**, rattachée à l'interface `IDBObjectStore`, renvoie un objet `IDBRequest` et, dans un *thread* séparé, supprime le ou les enregistrements concernés.

Cette méthode prend une clé ou un objet `IDBKeyRange` en argument ce qui permet de supprimer un ou plusieurs enregistrements. Si on souhaite supprimer l'ensemble des enregistrements d'un magasin de données, on utilisera plutôt la méthode `IDBObjectStore.clear`.

**Note:** Cette fonctionnalité est disponible via les Web Workers

Syntaxe
-------


```js
var request = objectStore.delete(keyOrKeyRange);
```

### Paramètres

`keyOrKeyRange`

La clé de l'enregistrement qu'on souhaite supprimer ou un objet `IDBKeyRange` qui indique l'intervalle de clés à supprimer.

### Valeur de retour

Un objet `IDBRequest` qui recevra les évènements relatifs à cette opération. `request.result` vaut `undefined`.

### Exceptions

Cette méthode peut lever une des exceptions suivantes :

| Exception | Description |
| --- | --- |
| `TransactionInactiveError` | La transaction associée au curseur `IDBCursor` est inactive. |
| `ReadOnlyError` | La transaction est uniquement en lecture seule. |
| `InvalidStateError` | Le curseur créé avec `IDBindex.openKeyCursor`, est en train d'être parcouru ou a été parcouru après sa fin. |
| `DataError` | La clé ou l'intervalle de clés n'est pas valide. |

Exemples
--------

Dans l'exemple qui suit, on ouvre une transaction en lecture/écriture et on supprime un enregistrement donné grâce à `delete()`. Pour un exemple complet, voir l'application Notifications To-do (démonstration).


```js
// On ouvre l'accès à la base de données
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = function (event) {
  note.innerHTML += "<li>Initialisation de la base</li>";

  // On enregistre le résultat de l'ouverture
  // dans la variable db.
  var db = DBOpenRequest.result;

  // On utilise deleteData() pour supprimer
  // un enregistrement
  deleteData();
};

function deleteData() {
  // On ouvre une transaction en lecture/écriture
  // afin de supprimer la donnée
  var transaction = db.transaction(["toDoList"], "readwrite");

  // On indique le succès de la transaction
  transaction.oncomplete = function (event) {
    note.innerHTML +=
      "<li>Transaction terminée : modification de la base terminée.</li>";
  };

  transaction.onerror = function (event) {
    note.innerHTML +=
      "<li>Transaction interrompue suite à l'erreur : " +
      transaction.error +
      "</li>";
  };

  // On crée un magasin d'objets pour la transaction
  var objectStore = transaction.objectStore("toDoList");

  // On supprime l'enregistrement du magasin
  var objectStoreRequest = objectStore.delete("Walk dog");

  objectStoreRequest.onsuccess = function (event) {
    // On indique le succès de l'opération
    note.innerHTML += "<li>Enregistremnt supprimé.</li>";
  };
}
```

Spécifications
--------------

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-delete① |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* L'exemple de référence : notifications de trucs à faire (voir la démonstration)