[Node.js] Express ORM 세팅해보기

2022. 10. 9. 14:20·Node.js/실험실
반응형

설치 

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
'Node.js/실험실' 카테고리의 다른 글
  • [Node] Google Analytics 데이터 불러오기
  • [Node.js] TypeScript 와 Express
  • [Node.js] Express에 Webpack 구현하기
  • [Node.js] Express set "views"
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    Docker
    CCNA
    프로그래머스
    리액트
    typescript
    영어회화
    식물
    next.js
    타일러영어
    ReactNative
    javascript
    다이소
    바질 키우기
    Node.js
    Babel
    알고리즘
    자바스크립트
    리얼학습일기
    덤프
    redux
    영어독학
    webpack
    바질
    타입스크립트
    리얼클래스
    네이버 부스트캠프
    네트워크
    react
    ChatGPT
    CSS
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[Node.js] Express ORM 세팅해보기
상단으로

티스토리툴바