hardBackend

How do database transactions work in Node.js and how do you avoid connection leaks?

284 views
01

Understand the problem

BEGIN/COMMIT/ROLLBACK on a pooled connection and try/finally release.

nodejsdatabasetransactionspooling
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

Transaction with guaranteed release
async function transfer(from, to, amount) {
  const client = await pool.connect();
  try {
    await client.query('BEGIN');
    await client.query('UPDATE acct SET bal = bal - $1 WHERE id=$2', [amount, from]);
    await client.query('UPDATE acct SET bal = bal + $1 WHERE id=$2', [amount, to]);
    await client.query('COMMIT');
  } catch (e) {
    await client.query('ROLLBACK');
    throw e;
  } finally {
    client.release();          // ALWAYS — even on error
  }
}
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.