Estoy construyendo una aplicación en node.js usando express y driver node-mysql. Hay un par de casos en mi aplicación cuando necesito hacer una serie de inserciones/actualizaciones de bases de datos. Los quiero en una transacción tal que si falla el segundo o el tercero, los insertos previos se retrotraen completamente.Node.js + MySQL - manejo de transacciones
Actualmente, la forma en que lo hago es tener algún tipo de middleware que hace un START TRANSACTION
cuando llega una solicitud. Durante el curso del procesamiento de la solicitud, si se produce un error, detecto este error y hago un ROLLBACK
. Si no ocurre ningún error, hago un COMMIT
antes de enviar la respuesta al navegador.
Sin embargo, ahora me preocupa que esto no funcione cuando varios usuarios accedan a la aplicación simultáneamente, ya que MySQL realiza una confirmación forzada si otra solicitud intenta comenzar su propia transacción con START TRANSACTION
. Actualmente estoy usando solo una instancia de nodo y una sola conexión MySQL para todas las solicitudes.
¿Puede alguien por favor avisarme si mis inquietudes son válidas, y cómo debería obtener soporte de transacciones?
Si tiene la opción, puede valer la pena usar couch/redis/mongo en su lugar, ya que es más fácil de usar con el nodo. Si ya tiene una base de datos MYSQL, continúe usándola. – Raynos
@Raynos AFAIK MongoDb no tiene soporte para transacciones ... – renatoargh