들어가기
해당 게시물은 Node.js 와 MySQL이 설치된 환경을 가정합니다.
최종 템플릿
시작
1. MySQL Connection 생성
MySQL Workbench를 실행합니다.
+ 버튼을 누릅니다.
입력 폼을 채워주세요.
필자는 Connection Name만 입력하고 나머지는 기본값으로 설정하였습니다.
비밀번호 설정을 원하신다면 'Store in Valut ...' 버튼을 눌러주세요.
생성된 커넥션을 클릭해 입장합니다.
커넥션 생성 끝.
2. 스키마 생성
스키마 이름을 입력합니다.
커넥션 이름과 동일해도 무방합니다.
스키마 생성 완료
홈으로 돌아가 커넥션에 기본 스키마를 적용한다.
위에서 생성한 스키마 이름을 작성하면 된다.
스키마 생성 끝.
3. 테이블 생성
필자는 ERDCloud를 사용해 ERD 작성과 SQL문 작성을 하였다.
USE MyProject;
CREATE TABLE `products` (
`id` int NOT NULL,
`name` varchar(255) NOT NULL,
`link` varchar(255) NOT NULL,
`src` varchar(255) NOT NULL,
`major_category` varchar(100) NOT NULL,
`middle_category` varchar(100) NOT NULL
);
SQL문을 실행하면 하단에 실행 결과 로그가 찍힌다.
성공적으로 테이블이 생성되었다면 좌측 사이드바의 우측 상단에 있는 새로고침 버튼을 누른다.
드롭다운을 열어 생성된 테이블을 확인한다.
테이블 생성 끝.
4. 프로젝트 세팅
# package.json 생성
npm init -y
# Express, Sequelize 및 MySQL 관련 패키지 설치
npm install express sequelize mysql2 dotenv
# Sequelize CLI 설치 (Migration, Seed 등을 위한 툴)
npm install --save-dev sequelize-cli
코드 편집기를 통해 프로젝트 폴더를 열고 터미널에 위 명령어를 입력한다.
npx sequelize-cli init
위 명령어를 사용해 기본 설정 파일과 디렉토리 구조를 만듭니다.
project
├── config
│ └── config.json # 데이터베이스 설정
├── models
│ ├── index.js # 모델 초기화 코드
│ └── (Your Models) # 모델 파일이 들어갈 디렉토리
├── migrations # 마이그레이션 파일 저장소
└── seeders # 더미 데이터 삽입 스크립트 저장소
명령어 입력 후 폴더 구조는 위와 같습니다.
.env 파일을 생성하고 해당 파일에 DB 정보를 작성합니다.
이 때 DB 정보는 MySQL에서 확인할 수 있습니다.
config/config.json 파일명을 config.js로 변경한다.
require('dotenv').config(); // .env 파일에서 환경변수를 불러오기 위한 설정
module.exports = {
development: {
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
host: process.env.DB_HOST,
dialect: process.env.DB_DIALECT,
},
test: {
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: "test_database",
host: process.env.DB_HOST,
dialect: process.env.DB_DIALECT,
},
production: {
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: "production_database",
host: process.env.DB_HOST,
dialect: process.env.DB_DIALECT,
},
};
config.js에 위 코드를 복붙한다.
파일명을 변경했기 때문에 models/index.js에서 파일 경로도 변경한다.
npx sequelize-cli model:generate --name Products --attributes name:string,link:string,src:string,major_category:string,middle_category:string
위 코드를 터미널에 복붙한다. (Sequelize CLI를 사용하여 Product 모델을 생성)
// 수정 편의를 위한 줄바꿈 버전이다.
// 터미널에 입력하기 전 줄바꿈을 삭제해야한다.
npx sequelize-cli model:generate --name Products --attributes
name:string,
link:string,
src:string,
major_category:string,
middle_category:string
정상적으로 실행됐다면 models 폴더 하위에 products.js 라는 모델 파일이 생성된다.
npx sequelize-cli db:migrate
데이터베이스에 테이블을 생성하기 위해 마이그레이션을 실행한다. (프로젝트에 작성된 모델 파일들을 데이터베이스 테이블로 마이그레이션)
마이그레이션을 실행하면 MySQL에 products 테이블과 sequelizemeta 테이블이 생성한다. (이 때, 우리는 3번 과정에서 이미 SQL문을 사용하여 products 테이블을 생성한 상태이기 때문에 위 코드를 실행해도 기존 products 테이블은 변경되지 않는다.)
실행 결과 products 테이블과 sequelizemeta 테이블이 생성된 것을 확인할 수 있다.
const express = require('express');
const { sequelize } = require('./models');
const dotenv = require('dotenv');
dotenv.config();
const app = express();
app.use(express.json());
// API Route
const PORT = process.env.PORT || 3000;
sequelize.sync()
.then(() => {
console.log('Database connected!');
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
})
.catch(err => console.log('Error: ' + err));
프로젝트 폴더에 app.js 파일을 생성하고 위 코드를 복붙한다.
node app.js
터미널에 위 코드를 실행하여 서버를 실행시킨다.
데이터베이스가 정상적으로 연동되었다면 'Server is running on port 3000'을 출력하고 에러가 발생했다면 에러 메세지를 출력한다.
프로젝트 세팅 끝.
추가
만약 sequelize-cli로 모델 생성 이후에 모델을 수정하고 이를 DB에 마이그레이션 하고싶다면?
'백엔드 > Node.js' 카테고리의 다른 글
[Node.js] Sequlize 마이그레이션 방법 (1) | 2024.11.01 |
---|---|
[Node.js] Node.js + Express + Sequelize + MySQL 라우터 및 컨트롤러 설정 방법 (0) | 2024.10.30 |
[Node.js] Express 서버 클라우드(AWS)에 배포하기_GPT-4o (0) | 2024.10.29 |
[Node.js] Express에서 쿠키&세션 사용방법 (0) | 2024.08.24 |
[Node.js] 시퀄라이즈(Sequelize)를 활용한 Node.js & Express & MySQL 연동 (0) | 2024.08.23 |