es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de nube de Firebase: La transacción de Firestore no se vuelve a ejecutar en la edición simultánea.

De acuerdo con la documentación de Firestore de Firebase en transacciones:

En caso de una edición concurrente, Cloud Firestore ejecuta toda la transacción nuevamente.

¿Es esto también cierto al ejecutar una transacción dentro de Firebase Cloud Functions utilizando el SDK de administración? Según mis pruebas, no parece ser así.

Probé esto con este ejemplo ficticio. Si se han eliminado todos los “cars”, elimino el documento “carsSummary/index”. Para asegurarme de que no haya condiciones de carrera, envuelvo esto en una transacción.

Con la prueba anterior, la operación de eliminación no se ejecuta correctamente si se agrega un “car” durante el “sleep(10000)”, lo que invalida la consulta “results”. Sin embargo, la transacción no se vuelve a ejecutar (es decir, “Running transaction” solo se llama una vez). ¿Es este el comportamiento correcto? ¿La documentación de Firebase está equivocada?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que ejecutar una transacción dentro de Firebase Cloud Functions usando el SDK de administración no sigue el mismo comportamiento mencionado en la documentación de Firebase sobre transacciones de Firestore. Según la documentación, si hay una edición concurrente, Cloud Firestore ejecuta toda la transacción de nuevo. Sin embargo, según el ejemplo proporcionado, el registro de la consola dentro del bloque de transacción solo se llama una vez, incluso si hay un cambio en los datos durante la ejecución de la transacción.

    Es posible que la documentación de Firebase sea incorrecta, o puede haber algunas diferencias en el comportamiento del SDK de administración. Es posible que sean necesarias más pruebas o aclaraciones por parte del soporte de Firebase para determinar el comportamiento correcto.

Comments are closed.