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
  }
});


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow