Suche…


Einführung

Transaktionen bieten einen Mechanismus zum Koordinieren zwischen mehreren Parteien, die möglicherweise gleichzeitig auf dieselben Daten zugreifen. Diese "Parteien" können verschiedene Instanzen desselben Codes sein, wie verschiedene Benutzer, die dieselbe Anwendung oder Knoten in einem Server-Cluster ausführen, Teile des gleichen Programms oder ereignisabhängige Programme wie eine Administrationsanwendung, eine "Endbenutzer" -Anwendung und / oder " Backend "Serverlogik.

Ein verteilter Zähler

Stellen Sie sich vor, viele Benutzer führen alle eine Webanwendung aus, die versucht, einen Zähler in der Datenbank zu erhöhen. Jeder Benutzer muss den aktuellen Zählerstand lesen, einen addieren und den aktualisierten Wert ausschreiben. Um sicherzustellen, dass niemand den Zähler liest, während ein anderer einen Zähler hinzufügt, verwenden wir eine Transaktion:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow