Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

210
Views
¿Se vuelven a ejecutar las transacciones de Firestore cuando se elimina el documento que se va a actualizar?

Imagina esta estructura de base de datos:

 /users(collection) userId/ (doc) likes/ (collection) postId1 (doc) postId2 (doc)

Estoy implementando una función para dar me gusta/no me gusta a las publicaciones.

Para eso, estoy ejecutando una transacción en la que get el estado Me gusta (me gusta) usando la transacción, para hacer esto (me gusta) o aquello (no me gusta).

Cuando se realiza una operación Me gusta, necesito agregar la publicación Me gusta a la subcolección Me likes del usuario que le dio Me gusta.

Pero... ¿qué pasa si el documento del usuario (al que le gusta la publicación) se elimina (en la interfaz de usuario tengo una sección para eliminar el perfil del usuario) durante la operación Me gusta?

Si solo hago:

 transaction.create(`users/${userId}/likes/${postId}`, denormalizedPostData);

¿La transacción detectará la eliminación del documento de usuario?

Si no, ¿qué sucede si también elimino los Me gusta/la subcolección del usuario al eliminar su documento?

 deleteUserDoc(userDocRef); deleteFullCollection(userLikesRef, batchSize);

Será el

 transaction.create(`users/${userId}/likes/${postId}`, data);

detectar el "cambio" (la eliminación del documento) y volver a ejecutar la transacción?

Pregunto esto porque sé que debemos asegurarnos de que las lecturas estén situadas antes que las escrituras en el cuerpo de las transacciones, para volver a ejecutar la transacción si los documentos leídos cambian... pero, ¿qué pasa con esta situación?

Tengo miedo de volver a crear el documento del usuario simplemente adjuntando un documento a la colección de Me gusta del usuario mediante la transaction.create() .


¿Debo hacer una lectura adicional en la parte superior de la transacción?

 transaction.get(userRef); // Just to ensure the re-execution
about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

Si lee el documento en el controlador de transacciones y luego escribe una modificación en él en ese mismo controlador, Firestore SDK envía el estado previo a la transacción y el estado posterior a la transacción de ese documento al servidor. Esto permite que el servidor detecte si el documento se modificó durante la transacción, incluso si se eliminó.

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!