No dejes de compartir nuestros tutoriales y códigos con otro, ayúdanos a hacer crecer nuestra comunidad.
Solución:
Aquí hay un método de ejemplo que incrementa un solo contador. los key la idea es que está creando la entrada (configurándola igual a 1) o mutando la entrada existente. El uso de una transacción aquí asegura que si varios clientes intentan incrementar el contador al mismo tiempo, todas las solicitudes eventualmente tendrán éxito. De la documentación de Firebase (énfasis mío):
Use nuestra función de transacciones cuando trabaje con datos complejos que podría corromperse con actualizaciones simultáneas
public void incrementCounter()
firebase.runTransaction(new Transaction.Handler()
@Override
public Transaction.Result doTransaction(final MutableData currentData)
if (currentData.getValue() == null)
currentData.setValue(1);
else
currentData.setValue((Long) currentData.getValue() + 1);
return Transaction.success(currentData);
@Override
public void onComplete(FirebaseError firebaseError, boolean committed, DataSnapshot currentData)
if (firebaseError != null)
Log.d("Firebase counter increment failed.");
else
Log.d("Firebase counter increment succeeded.");
);
Se agrega una nueva característica a firestore para incrementar automáticamente los valores. Tan simple como
document("fitness_teams/Team_1").
updateData(["step_counter" : FieldValue.increment(500)])
enlace de referencia: https://firebase.googleblog.com/2019/03/increment-server-side-cloud-firestore.html
Usado debajo del código en mi proyecto.
var firestore = Firestore.instance;
firestore.collection('student').document('attendance').updateData('total_attendace': FieldValue.increment(1));