firebase-database
Transakcje w bazie danych Firebase w czasie rzeczywistym
Szukaj…
Wprowadzenie
Transakcje zapewniają mechanizm koordynacji między wieloma podmiotami, które mogą uzyskiwać dostęp do tych samych danych w tym samym czasie. Te „podmioty” mogą być różnymi instancjami tego samego kodu, takimi jak różni użytkownicy uruchamiający tę samą aplikację lub węzły w klastrze serwerów, części tego samego programu lub zdarzenia różnych programów, takie jak aplikacja administracyjna, aplikacja „użytkownika końcowego” i / lub „ backend ”logika serwera.
Rozproszony licznik
Wyobraź sobie, że wielu użytkowników korzysta z aplikacji internetowej, która próbuje zwiększyć licznik w bazie danych. Każdy użytkownik musi odczytać bieżącą liczbę, dodać jedną i zapisać zaktualizowaną wartość. Aby upewnić się, że nikt nie czyta licznika, gdy ktoś inny go dodaje, korzystamy z transakcji:
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
}
});