[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)
  • 태그

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

티스토리툴바