update transaction query hacer firestore example consultas como firebase google-cloud-firestore

firebase - transaction - Cómo crear/actualizar varios documentos a la vez en Firestore



firestore update (2)

¿Es posible almacenar varios documentos en Firestore con solo una solicitud? Con este bucle es posible, pero esto causaría una operación de guardado por elemento en la lista.

for (counter in counters) { val counterDocRef = FirebaseFirestore.getInstance() .document("users/${auth.currentUser!!.uid}/lists/${listId}/counters/${counter.id}") val counterData = mapOf( "name" to counter.name, "score" to counter.score, ) counterDocRef.set(counterData) }


Actualizar algunas propiedades en todos los documentos en una colección:

resetScore(): Promise<void> { return this.usersCollectionRef.ref.get().then(resp => { console.log(resp.docs) let batch = this.afs.firestore.batch(); resp.docs.forEach(userDocRef => { batch.update(userDocRef.ref, {''score'': 0, ''leadsWithSalesWin'': 0, ''leadsReported'': 0}); }) batch.commit().catch(err => console.error(err)); }).catch(error => console.error(error)) }


De la documentación de Firebase:

También puede ejecutar varias operaciones como un solo lote, con cualquier combinación de los métodos set (), update () o delete (). Puede realizar escrituras por lotes en varios documentos y todas las operaciones en el lote se completan de forma atómica.

// Get a new write batch WriteBatch batch = db.batch(); // Set the value of ''NYC'' DocumentReference nycRef = db.collection("cities").document("NYC"); batch.set(nycRef, new City()); // Update the population of ''SF'' DocumentReference sfRef = db.collection("cities").document("SF"); batch.update(sfRef, "population", 1000000L); // Delete the city ''LA'' DocumentReference laRef = db.collection("cities").document("LA"); batch.delete(laRef); // Commit the batch batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { // ... } });

Firestore operaciones de escritura múltiple

Espero eso ayude..