firebase-database
Firebase Realtime Database-transacties
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
}
});