firebase-database
Transazioni di database in tempo reale di Firebase
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
}
});