설치
npm install mysql2 sequelize sequelize-cli
mysql2는 node와 mysql의 연결을 위해서 사용하는 패키지
sequelize는 ORM을 이용해서 데이터베이스를 다룰 수 있는 패키지
sequelize-cli는 데이터베이스 작업을 sequelize와 연동해서 터미널에서 수행하게 해주는 패키지
초기화
npx sequelize init
초기 세팅을 위해서 사용하는 패키지
- config/config.json
- models/
- migrations/
- seeders/
4개의 디렉토리가 만들어진다.
config/config.json
우선 json 파일이면 env로 설정을 불러오지 못한다.
그러므로 간단하게 수정을 한다.
// config/config.js
require("dotenv").config();
const { MYSQL_HOST, MYSQL_USER, MYSQL_PORT, MYSQL_PW, MYSQL_DB } = process.env;
const development = {
username: MYSQL_USER,
password: MYSQL_PW,
database: MYSQL_DB,
host: MYSQL_HOST,
port: MYSQL_PORT,
dialect: "mysql",
};
const test = {
username: MYSQL_USER,
password: MYSQL_PW,
database: MYSQL_DB,
host: MYSQL_HOST,
port: MYSQL_PORT,
dialect: "mysql",
};
const production = {
username: MYSQL_USER,
password: MYSQL_PW,
database: MYSQL_DB,
host: MYSQL_HOST,
port: MYSQL_PORT,
dialect: "mysql",
};
module.exports = { development, production, test };
js 파일로 변경하고 다음과 같이 env 설정값을 넣어준다.
각각의 설정은 개발용, 테스트용, 배포용으로 나뉘어 진다. 필요에 따라 설정을 해주면 된다.
// models/index.js
const config = require(__dirname + "/../config/config.json")[env];
->
const config = require(__dirname + "/../config/config.js")[env];
models의 index.js에서 config를 불러오는 곳에서 확장자를 변경해주면 끝이다.
데이터베이스 생성
npx sequelize db:create --env development
db:create 명령어를 통해서 데이터베이스를 생성하는데,
--env 옵션으로 원하는 config.js 파일의 설정을 불러와 데이터베이스를 만들 수 있다.
테이블 생성
본인은 이미 mysql에 테이블을 모두 만든 상태이다.
미리 만들어둔 테이블을 불러오기 위해서 작업을 조금해야한다.
npm i sequelize-auto
자동으로 테이블을 만들어주는 패키지이다.
sequelize-auto -o "./models" -d 테이블명 -h DB_URL -u 유저명 -p 포트 -x 비밀번호 -e DB명
명령어를 입력하면 자동으로 ./models 경로에 테이블을 만들어준다.
오류
bash: sequelize-auto: command not found
npm install -g sequelize-auto
명령어로 전역으로 설치해준다.
Error: Please install mysql2 package manually
npm i -g mysql2
명령어로 전역으로 설치해준다.
모델과 테이블 연동
마지막으로 모델과 테이블을 연동해준다.
// app.js
// ...
const db = require("./models");
// ...
db.sequelize.sync();
반응형
'Node.js > 실험실' 카테고리의 다른 글
[Node] Google Analytics 데이터 불러오기 (0) | 2023.08.10 |
---|---|
[Node.js] TypeScript 와 Express (0) | 2022.10.18 |
[Node.js] Express에 Webpack 구현하기 (1) | 2022.09.28 |
[Node.js] Express set "views" (2) | 2022.09.26 |
[Node.js] Zoom 클론코딩 - 채팅방편 (1) | 2022.06.21 |