node.js mysql pool beginTransaction & connection
A transaction cannot be shared by multiple database connections and is always limited to a single connection. The best approach would be to acquire a connection from the pool before you begin the transaction and release it after a rollback or a commit.
pool.getConnection(function(err, connection) { connection.beginTransaction(function(err) { if (err) { //Transaction Error (Rollback and release connection) connection.rollback(function() { connection.release(); //Failure }); } else { connection.query('INSERT INTO X SET ?', [X], function(err, results) { if (err) { //Query Error (Rollback and release connection) connection.rollback(function() { connection.release(); //Failure }); } else { connection.commit(function(err) { if (err) { connection.rollback(function() { connection.release(); //Failure }); } else { connection.release(); //Success } }); } }); } });});