Zoeken…


Invoering

Transacties bieden een mechanisme om te coördineren tussen meerdere partijen die mogelijk tegelijkertijd toegang hebben tot dezelfde gegevens. Deze "partijen" kunnen verschillende instanties van dezelfde code zijn, zoals verschillende gebruikers die dezelfde applicatie uitvoeren of knooppunten in een servercluster, delen van hetzelfde programma of verschillende programma's zoals een administratie-applicatie, een "eindgebruiker" -applicatie en / of " backend "serverlogica.

Een verdeelde teller

Stel je voor dat veel gebruikers allemaal een webtoepassing uitvoeren die een teller in de database probeert te verhogen. Elke gebruiker moet de huidige telling lezen, er een toevoegen en de bijgewerkte waarde wegschrijven. Om ervoor te zorgen dat niemand de teller leest terwijl iemand anders er een toevoegt, gebruiken we een transactie:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow