Node.js에서 DB에 접근하여 데이터를 CRUD하기 위해 필요한 모듈
MySQL은 mysql 모듈 사용
connection 객체를 생성하여 DB와 통신
connection 설정을 위한 config 설정 필요(DB 통신 정보 저장)
connection 생성/사용 방법
프로젝트 내에서 config 폴더를 생성하고 그 안에 config 파일을 아래와 같이 만든다.
const config = {
host: "RDS 엔드포인트 or localhost등 DB hostname",
port: "DB 포트번호(3306)",
user: "MySQL user 이름"
password: "MySQL password",
database: "접근할 스키마 이름",
}
config에는 DB 정보를 입력해 넣는다.
1번에 1개의 connection을 생성 후 DB와 연결
하나의 쿼리를 실행: 쿼리 실행 중에 연결을 차단하여 다른 쿼리 실행 차단
connection을 매번 열고 닫는 작업을 반복해야 한다.
connection.query(query, [values], callback);
query: 쿼리문이 string 형식으로 들어감
변수 자리에 ?로 푯시해 런타임에 배정하거나 백틱 문자열을 사용하여 쿼리문에 변수 배정
values: 쿼리문 안에 들어갈 변수들이 배열 형식으로 들어감 (1개일 때는 배열 생략 가능)
callback: select 문의 결과가 json 배열 형태로 돌아옴 ex) [{obj1}, {obj2}, {obj3}, ...]
insert, update, delete는 에러 처리만 함
connection.end(): 커넥션 종료
여러 개의 connection pool을 미리 만들어 놓고 거기서 connection을 가져다 씀
connection을 가져왔다가 반납하는 것을 반복
connection.release();
connection 반환하는 메소드 -> connection.query 콜백 메소드 안에서 해줘야 한다.
빼먹으면 계속 connection이 쌓이고 쌓여서 결국 통신 불가
beginTransaction
트렌젝션 처리하기 위한 메소드
connection을 생성하고 beginTransaction 메소드로 감싼 부분에 트렌젝션이 적용된다.
데이터베이스의 상태를 변화시키기 위햇서 수행하는 작업의 단위
-> 여러 단계의 처리를 하나의 처리처럼 다루는 기능
커밋 (commit): 트렌젝션의 실행 결과를 데이터베이스에 반영하는 것
롤백 (roll-back): 반영하지 않고 원래 상태로 되돌리는 것
트렌젝션의 특징