트랜잭션

<aside> 💡 일단 기본 mysql이 깔려 있다는 전제하에 mysql2설치 npm i mysql2 : 2를 설치하는 이유는 비동기 방식을 지원하기 때문

</aside>

const mysql = require('mysql2')

// 여기서 호스트 포트 모든 부분을 dotenv 써서 불러오면된다
const pool = mysql.createPool({
  host: 'localhost',
  port: 3306,
  user: 'demouser',
  password: 'demo12#$',
  database: 'demo_db',
  connectionLimit: 10 // 이거 알아보기
})

module.exports = pool
const pool = require('위에 모듈 가져오면 된다');

const conn = await pool.getConnection(); // 이렇게 쓰면 바로 async없어서 에러 뱉을텐데 
// 그건 함수를 선언해서 쓰던지 아님 module.exports = async () => {} 이런 식으로 해결가능 

try{
	await conn.beginTransaction();

	let tran = await conn.query(~~~~~~);
	let tran2 = await conn.query(~~~~~~);

	await conn.commit();
}catch(err) {
	await conn.rollback();
	throw err;
} finally {
	conn.release();
}

이런 식으로 트랜잭션 사용가능
비동기를 사용하지 않고 구현을 했더라면 아마 안에서 안으로 들어가는 hell을 보게됐을텐데
아주 보기가 좋다 굿굿 
그리고 만약 위에서 const conn1 = await pool.getConnection(); 을한다면 conn과는 별개로 
트랜잭션을 실행가능 하다 

connection 과 pool에 대한 설명 및 차이 엄청 잘 되어있는 곳!

createConnection vs createPool

.

트랜잭션 연결에 대한 것을 여기보고 많이 이해했다

삽질하는 멍개씨 : 네이버 블로그