Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Les API Web
  3. IDBTransaction

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

IDBTransaction

Baseline Widely available *

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.

L'interfaceIDBTransaction de l'API IndexedDB fournit une transaction statique asynchrone vers une base de données grâce à des attributs de gestion d'évènementns. Toutes les opérations de lecture et d'écriture de données sont effectuées au sein de transaction. Il est possible d'utiliserIDBDatabase afin d'initier des transactions puisIDBTransaction afin de paramétrer le mode de la transaction (c'est-à-dire s'il est en lecture seule ou en lecture/écriture) et d'accéder à un objetIDBObjectStore pour réaliser une requête. On peut également utiliserIDBTransaction pour interrompre une requête.

S'il vous garantir une certaine longévité (par exemple si on utilise des données critiques qui ne peuvent pas être recalculées par la suite), il est possible d'écrire le contenu de la transaction sur le disque avant la diffusion de l'évènementcomplete grâce au mode expérimental non-standardreadwriteflush (cf.IDBDatabase.transaction).

On notera qu'une transaction commence dès sa création et pas lorsque la première requête est lancée. Par exemple :

js
var trans1 = db.transaction("toto", "readwrite");var trans2 = db.transaction("toto", "readwrite");trans2.put("2", "clé");trans1.put("1", "clé");

Une fois que le code est exécuté, le magasin d'objet contiendra la valeur "2" car la transaction est lancée après la transactiontrans1.

Note : Cette fonctionnalité est disponible via lesWeb Workers.

Méthodes

Cette interface hérite deEventTarget.

IDBTransaction.abort

Cette méthode annule les modifications apportées aux objets associés à cette transaction. Si la transaction a déjà été interrompue ou est terminée, cette méthode déclenchera un évènement d'erreur.

IDBTransaction.objectStore

Cette méthode renvoie un objetIDBObjectStore qui représente le magasin d'objet associé à cette transaction.

Propriétés

IDBTransaction.dbLecture seule

La connexion à la base de données associée à cette transaction.

IDBTransaction.modeLecture seule

Le mode de la transaction qui définit la façon dont on accède/modifie les données. Les différentes valeurs sont définies ci-après dans la section Constante. Par défaut, la valeur estreadonly.

IDBTransaction.objectStoreNamesLecture seule

Cette propriété est une liste (DOMStringList) des noms des objetsIDBObjectStore.

IDBTransaction.errorLecture seule

Cette propriété renvoie le type de l'erreur qui se produit lorsque la transaction infructueuse. Cette propriété vautnull si la transaction n'est pas finie, est finie et validée correctement ou a été cloturée avec la fonctionIDBTransaction.abort.

Gestionnaires d'évènements

IDBTransaction.onabortLecture seule

Ce gestionnaire permet de gérer l'évènementabort qui est déclenché lorsque la transaction a été interrompue.

IDBTransaction.oncompleteLecture seule

Ce gestionnaire permet de gérer l'évènementcomplete qui est déclenché lorsque la transaction se finit correctement.

IDBTransaction.onerrorLecture seule

Ce gestionnaire permet de gérer l'évènementerror qui est déclenché lorsqu'une erreur empêche la transaction de se finir correctement.

Les différents modes

Une transaction peut s'effectuer dans l'un de ces modes :

ValeurDescription

"readonly"

(0 dans Chrome)

Ce mode permet de lire les données mais pas de les modifier.

"readwrite"

(1 dans Chrome)

Ce mode permet de lire, d'écrire et de modifier les données du magasin d'objets.

"versionchange"

(2 dans Chrome)

Ce mode permet d'effectuer toutes les opérations, y compris l'ajout ou la suppression de magasins d'objets et d'index. Ce mode doit être utilisé pour mettre à jour le numéro de version utilisé par les transactions démarées avec la méthodesetVersion() deIDBDatabase. Les transactions lancées dans ce mode ne peuvent pas être lancées en même temps que d'autres transactions. Ces transactions sont parfois qualifiées comme « transactions de mise à jour ».

Exemples

Dans l'exemple qui suit, on ouvre une transaction en lecture/écriture sur la base de données et on ajoute des données dans le magasin d'objet. On notera également l'utilisation des gestionnaires d'évènements attachés à la transaction qui permettent d'indiquer la réussite ou l'échec de l'ouverture de la transaction. Pour un exemple complet, voirl'application de notifications To-do (voir également la démonstrationlive)

js
// On commence par ouvrir la base de donnéesvar 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 afin de l'utiliser  // ensuite  var db = DBOpenRequest.result;  // On utilise la fonction addData() afin d'ajouter  // des données à la base de données  addData();};function addData() {  // On crée un nouvel objet prêt à être inséré  // dans la base de données  var newItem = [ { taskTitle: "Promener le chien", hours: 19, minutes: 30, day: 24, month: "Décembre", year: 2013, notified: "no" } ];  // On ouvre une transaction en lecture/écriture  // vers la base de données afin d'ajouter des  // données  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 finie.</li>';  };  transaction.onerror = function(event) {    note.innerHTML += '<li>Transaction non-ouverte à cause d'une erreur. Les doublons ne sont pas autorisés.</li>';  };  // On crée un magasin d'objet pour la transaction  var objectStore = transaction.objectStore("toDoList");  // On ajoute l'objet newItem au magasin d'objets  var objectStoreRequest = objectStore.add(newItem[0]);  objectStoreRequest.onsuccess = function(event) {    // On indique le succès de l'ajout de l'objet    // dans la base de données    note.innerHTML += '<li>Un nouvel élément a été ajouté dans la base de données.</li>';  };};

Spécifications

Specification
Indexed Database API 3.0
# transaction

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp