Recherche…


Introduction

Les transactions fournissent un mécanisme de coordination entre plusieurs parties pouvant accéder simultanément aux mêmes données. Ces "parties" peuvent être différentes instances du même code comme différents utilisateurs exécutant la même application ou des nœuds dans un cluster de serveurs, des parties du même programme ou des programmes différents comme une application d'administration, une application "utilisateur final" et / ou " backend "logique du serveur.

Un compteur distribué

Imaginez que de nombreux utilisateurs exécutent tous une application Web qui tente d’incrémenter un compteur dans la base de données. Chaque utilisateur doit lire le compte actuel, en ajouter un et écrire la valeur mise à jour. Pour vous assurer que personne ne lit le compteur pendant que quelqu'un en ajoute un, nous utilisons une transaction:

ref.transaction(function(value){
  if (value === null) {
    // the counter doesn't exist yet, start at one
    return 1;
  } else if (typeof value === 'number') {
    // increment - the normal case
    return value + 1;
  } else {
    // we can't increment non-numeric values
    console.log('The counter has a non-numeric value: ' + value)
    // letting the callback return undefined cancels the transaction
  }
});


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow