npm init
npm install [모듈이름]
npm install --save-dev [모듈이름]
dependency에 dotenv,mysql2 / dev dependency에 sequelize, sequelize-cli 모듈
USER_NAME=[DB 유저 이름]
USER_PASSWORD=[그 유저의 비밀번호]
**경우에 따라 다른 변수도 추가 가능**
이후 환경변수를 쓸 파일안에서
require("dotenv").config();
로 작성하면
process.env.USER_NAME
과 같이 사용가능
이 단계 시작전에 글로벌에 mysql을 미리 설치해야 함
db를 구성하기 위해 일단 mysql내에 db생성
create database [db 이름];
sequelize-cli를 사용하기 위하여 환경 셋팅
npx sequelize init
이를 통해 config,migration,models,seeders 폴더가 생김
환경변수 이용을 위해 config폴더안 config.json파일을 수정
이렇게 생긴 초기상태의 파일을
{
"development": {
"username": "root",
"password": null,
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
이렇게 생긴 js 파일로 수정
require("dotenv").config();
module.exports = {
development: {
username: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD,
database: "[db이름]_development",
host: "127.0.0.1",
dialect: "mysql",
},
test: {
username: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD,
database: "[db이름]_test",
host: "127.0.0.1",
dialect: "mysql",
},
production: {
username: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD,
database: "[db이름]",
host: "127.0.0.1",
dialect: "mysql",
},
};
model 폴더의 index.js 파일도 수정
const config = require(__dirname + '/../config/config.json')[env];
const config = require(__dirname + "/../config/config.js")[env];
여기까지 세팅 완료
명령어를 통해 model파일과 migration파일을 생성
npx sequelize-cli model:generate --name [테이블명] --attributes [컬럼명]:string,[컬럼명]:integer,[컬럼명]:text
작성시 쉼표간에 띄어쓰기가 없음에 주의!
M:N테이블을 만들고 싶다면?
model generate할때 바로 잡아주는 방법을 몰라서 직접 수정해 주었음
generate를 통해 생긴 migration 파일 안에서 수정
//original
user_id: {
type: Sequelize.INTEGER,
},
//fixed
//user_id라는 컬럼이 users라는 테이블의 id라는 pk를 참조하는 fk로 지정
user_id: {
type: Sequelize.INTEGER,
references: { model: "users", key: "id" },
},
migration파일에서 필요한 수정이 다 끝났으면
npx sequelize-cli db:migrate
를 통해 db에 테이블 생성
터미널에서 mysql 실행후
show databases;
use [데이터베이스 이름];
show tables;
desc [테이블 이름];
순으로 명령어를 입력하여 잘 완성됐는지 확인 가능
프로젝트 폴더 안에서
npx sequelize-cli db:migrate:undo
또는
npx sequelize-cli db:migrate:undo:all
을 통해 테이블을 지우고 다시 진행하는 것도 가능
migrate:undo 명령어로 지울때는 한단계씩 뒤로 갈 수 있기 때문에 틀린 지점으로 단계별 접근이 가능하다는 장점이 있음, 하지만 migrate는 일단 존재하는 migration파일을 전부 migration시켜준다는 점 주의
참고자료 :
https://sequelize.org/master/manual/migrations.html
https://sequelize.org/master/manual/assocs.html