[Node] mySQL과 Sequelize를 이용한 데이터베이스 설정
- 패키지 설치(mysql2, sequelize, sequelize-cli)
- 프로젝트의 이상적인 구조를 만들기 위한 디렉토리 및 파일 생성
- DB 정보 설정
- 데이터베이스 생성
- 테이블, 모델 생성
- 데이터베이스에 테이블 생성
⛔️ 이 글 보다는 다음 글을 참고하는 것을 권장합니다.
[TypeScript] 타입스크립트로 sequelize를 활용하여 데이터베이스 연결
준비사항: express, @types/express, mysql2, sequelize, sequelize-cli, dotenv 시작하기 sequelize init으로 config, migrations, models, seeders디렉토리를 생성한다. 이 디렉토리들을 src 디렉토리 안에 넣어도 괜찮고, 밖에
developer-holychan.tistory.com
패키지 설치
VSCode 터미널에서 npm install mysql2 sequelize sequelize-cli 입력하여 설치
디렉토리 및 파일 생성
VSCode 터미널에서 npx sequelize init 입력
config, models, migrations, seeders 디렉토리 생성된다. (각 폴더에는 데이터베이스 설정과 관련된 파일이 존재한다)
데이터베이스 정보 설정
config 디렉토리 안에 있는 config.json 파일에는 객체 하나가 존재하는데 그 안에는 총 3개의 프로퍼티 객체가 존재한다.
그 중 development 프로퍼티 객체의 내용을 다음과 같이 수정. ( ${} 으로 표시한 것들은 알아서 작성)
세 가지 프로퍼티 가 존재하는 이유: 더보기
development 프로퍼티 객체는 개발용
test 프로퍼티 객체는 테스트용
production 프로퍼티 객체는 배포용
이 세 가지가 존재하는 이유는 보통 개발용 테스트용 배포용으로 세 가지 경우에 대해서 따로따로 하기 때문이다.
// config/config.json
"development": {
"username": "root", // 글쓴이는 username이 root 입니다.(기본: root)
"password": ${}, // mySQL 설치 시 작성한 비밀번호
"database": ${}, // 데이터베이스 이름
"host": "127.0.0.1",
"dialect": "mysql"
},
데이터베이스 생성
VSCode 터미널에 다음과 같이 작성 npx sequelize db:create
테이블, 모델 생성 (이 글에서 데이터베이스의 이름은 client Info 이다.)
npx sequelize model:generate --name Info --attributes name:string,sex:string,emailAddress:string,mobilePhone:string,birthday:date
(줄이 나눠졌지만 ...--attributes스페이스name... 이렇게 이어나가자.)
위 명령어를 실행하면 'Info'라는 이름의 모델이 생성되고, 이 모델에 대한 마이그레이션 파일도 migrations 디렉토리에 생성된다.
마이그레이션 파일은 데이터베이스 스키마를 버전 관리 하는 데 사용된다.
더보기: 데이터베이스 스키마(Database Schema)?, 컬럼(Column)?
데이터베이스 스키마(Datamase Schema)?
스키마는 데이터베이스의 구조와 제약 조건에 대한 전반적인 명세를 의미한다. 예를 들어, 테이블 이름, 각 테이블의 컬럼(Column)과 그 타입, 각 테이블 간의 관계 등을 정의하게 된다. 쉽게 말해서 '데이터베이스 스키마Schema'는 데이터베이스 청사진 (혹은 '틀', 혹은 '계획')이라고 할 수 있다.
컬럼(Column)?
엑셀의 Column과 같다. 예를 들면 '이름', '이메일', '생일' 등이 컬럼에 해당한다.
표로 예를 들면 맨 윗 줄.
데이터베이스에 적용
VSCode 터미널에 npx sequelize db:migrate 작성
이렇게 하면 데이터베이스에 테이블이 생성된다.
이제 데이터베이스가 준비되었으므로, 이를 이용한 개발이 가능하다.
'BE > NodeJS' 카테고리의 다른 글
[Node.js] 유효성 검사(Validation), express-validator 사용법 (0) | 2023.05.28 |
---|---|
[Node] findOne 메소드와 조건추가 이해하기 (0) | 2023.05.15 |
[Node] findAll 메소드 활용하여 Database 조회하기 (0) | 2023.05.15 |
[Express] 라우팅 메소드 put과 delete 이해와 예시 (0) | 2023.05.13 |
[Node.js] readFile과 createReadStream 비교 및 활용방법 (0) | 2023.05.13 |