Ricerca…


introduzione

Le transazioni forniscono un meccanismo per coordinare tra più parti che potrebbero accedere agli stessi dati nello stesso momento. Queste "parti" potrebbero essere istanze diverse dello stesso codice come diversi utenti che eseguono la stessa applicazione o nodi in un cluster di server, parti dello stesso programma o eventi diversi programmi come un'applicazione di amministrazione, un'applicazione "utente finale" e / o " back-end "logica del server.

Un contatore distribuito

Immagina che molti utenti eseguano un'applicazione web che sta tentando di incrementare un contatore nel database. Ogni utente deve leggere il conteggio corrente, aggiungerne uno e scrivere il valore aggiornato. Per essere sicuri che nessuno legga il contatore mentre qualcun altro ne sta aggiungendo uno, usiamo una transazione:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow