--- title: IDBObjectStore.put() slug: Web/API/IDBObjectStore/put tags: - API - IDBObjectStore - IndexedDB - Méthode - Reference translation_of: Web/API/IDBObjectStore/put ---
La méthode put(), rattachée à l'interface {{domxref("IDBObjectStore")}}, renvoie un objet {{domxref("IDBRequest")}} et, dans un autre thread, crée un clone structuré de la valeur puis enregistre ce clone dans le magasin d'objet. Cette méthode permet ainsi d'ajouter de nouveaux enregistrements ou de mettre à jour des enregistrements existants dans un magasin d'objet lorsque la transaction est en mode readwrite (lecture-écriture)
Si l'enregistrement est stocké avec succès, un évènement de succès sera déclenché sur la requête renvoyée par la méthode. La propriété result de cette requête contiendra la clé de l'enregistrement créé ou mis à jour. La propriété transaction de cette requête sera la transaction dans laquelle le magasin d'objet est ouvert.
La méthode put() permet d'ajouter ou de mettre à jour. Si on souhaite uniquement insérer, on utilisera plutôt {{domxref("IDBObjectStore.add")}}.
{{AvailableInWorkers}}
var request = objectStore.put(monElement); var request = objectStore.put(monElement, cleOptionnelle);
monElementcleOptionnelle {{optional_inline}}Un objet {{domxref("IDBRequest")}} qui recevra les évènements qui seront déclenchés suite à cette opération.
Cette méthode peut lever une de ces exceptions {{domxref("DOMException")}} :
| Exception | Description |
|---|---|
ReadOnlyError |
La transaction associée à l'opération est uniquement dans un mode de lecture seule. |
TransactionInactiveError |
La transaction rattachée à l'objet {{domxref("IDBObjectStore")}} est inactive. |
DataError |
L'une de ces conditions est vérifiée :
|
InvalidStateError |
L'objet {{domxref("IDBObjectStore")}} a été supprimé ou déplacé. |
DataCloneError |
Les données à enregistrer n'ont pas pu être clonées par l'algorithme interne. |
Dans l'exemple suivant, on effectue une requête pour obtenir l'enregistrement correspondant à un titre donné. Lorsque cette requête est réussie, on récupère l'enregistrement via la fonction onsuccess. Ensuite, on met à jour une des propriétés de l'enregistrement et on enregistre la valeur mise à jour dans le magasin d'objet avec une autre requête et put().
var title = "Walk dog";
// On ouvre une transaction
var objectStore = db.transaction(['toDoList'], "readwrite").objectStore('toDoList');
// On obtient la liste to-do dont le titre correspond
var objectStoreTitleRequest = objectStore.get(title);
objectStoreTitleRequest.onsuccess = function() {
// On récupère les données de l'objet associé
// à l'enregistrement
var data = objectStoreTitleRequest.result;
// On met à jour la valeur de notified avec "yes"
data.notified = "yes";
// On crée une autre requête pour appliquer cette
// mise à jour en base de données
var updateTitleRequest = objectStore.put(data);
// On imprime la transaction à l'origine
// de la requête
console.log("La transaction originelle est " + updateTitleRequest.transaction);
// Lorsque cette nouvelle requête a réussi. On affiche
// les données grâce à la fonction displayData()
updateTitleRequest.onsuccess = function() {
displayData();
};
};
| Spécification | État | Commentaires |
|---|---|---|
| {{SpecName('IndexedDB', '#widl-IDBObjectStore-put-IDBRequest-any-value-any-key', 'put()')}} | {{Spec2('IndexedDB')}} |
{{Compat("api.IDBObjectStore.put")}}