[TIL] 24.10.22 TUE

GDORI·약 10시간 전
0

TIL

목록 보기
79/79
post-thumbnail

음.. 오늘은 TCP 강의를 좀 많이 반복해서 듣고 빈 프로젝트에서 작성해보려고 노력을 했었어서 새로운 지식을 습득한 것은 없다.

그래서 오늘의 TIL은 복습을 통한 부족한 실력 개선을 목표로 작성하고자 한다.

로우쿼리

이번 TCP 과제에서는 mysql2를 사용한다. 즉, ORM을 사용하지 않고 로우쿼리로 진행한다. 사용법에 대하여 한번 더 짚고 넘어가겠다.

DB 연결

import mysql from 'mysql2';

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'sparta',
});

connection.connect((err) => {
  if (err) {
    console.error('DB 연결 실패:', err);
    return;
  }
  console.log('DB 연결 성공!');
});

파라미터 바인딩을 이용한 쿼리 실행

const query = 'SELECT * FROM users WHERE id = ?';
connection.query(query, [1], (err, results) => {
  if (err) {
    console.error('쿼리 오류:', err);
    return;
  }
  console.log('사용자 데이터:', results);
});

트랜젝션

 try {
    await connection.beginTransaction();

    // 데이터 삽입
    await connection.query('INSERT INTO users (name, email) VALUES (?, ?)', ['Charlie', 'charlie@example.com']);

    // 일부러 에러 발생 (중복된 이메일 삽입)
    await connection.query('INSERT INTO users (name, email) VALUES (?, ?)', ['Dave', 'charlie@example.com']);

    await connection.commit();  // 정상 실행 시 커밋
  } catch (err) {
    console.error('에러 발생, 롤백합니다:', err);
    await connection.rollback();  // 에러 발생 시 롤백
  } finally {
    await connection.end();
  }
}
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글