<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과는 별개로
트랜잭션을 실행가능 하다
createConnection vs createPool

.