ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Node #2 Sequelize
    공부/Node 2021. 7. 9. 16:15

    Sequelize

    • Node에서 mysql을 쉡가 다룰 수 있도록 도와주는 라이브러리

    • Node의 대표적인 ORM 이다

    • MySQL, PostgreSQL, MariaDB 등 많은 RDBMS 를 지원한다

    • Promise 기반으로 구현되어 비동기 로직을 편리하게 작성할 수 있다


    ORM

    • Object Relational Mapping

    • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑 해주는 것

    • 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다

    • 쿼리를 작성하지 않아도 객체의 메서드를 활용하는 것처럼 쿼리 로직을 작성할 수 있다.




    설치

    • MySql 과 Sequelize 를 사용하기 위해 mysql2, sequelize, sequelize-cli 를 설치한다

    • sequelize-cli : 시퀄라이즈 명령어를 실행하기 위한 패키지

    • mysql2 : MySql 과 시퀄라이즈를 연결해주는 드라이버, mysql2 자체가 데이터베이스 프로그램은 아니다

    • sequelize-cli 를 전역으로 설치해야 sequelize 커맨드를 사용할 수 있다

    • 전역 설치 없이 명령어로 사용하려면 npx 명령어를 사용한다

    • npm i sequelize mysql2
      npm i -g sequelize-cli

    초기화

    • sequelize init
    • npx sequelize init
    • 초기화를 하고 나면 필요한 파일들이 자동으로 생성된다

    • config : 데이터베이스 설정, username, DB이름, password 등이 담겨있다

    • migrations : 데이터베이스의 변화하는 과정들을 추적하는 정보, 실제 데이터베이스에 반영할 수도 있고 취소할 수도 있다.

    • models : 데이터베이스 각 테이블의 정보와 필드타입을 정의하고 객체로 만든다

    • seeders : 테이블에 기본 데이터를 넣을 때 사용




    환경설정

    models/index.js

    • const Sequelize = require('sequelize')
      
      const env = process.env.NODE_ENV || 'development'
      const config = require('../config/config.json')[env]
      const db = {}
      
      const sequelize = new Sequelize(config.database, config.username, config.password, config)
      
      db.sequelize = sequelize
      
      module.exports = db


    config/config.json

    •   "development": {
          "username": "root",
          "password": "root",
          "database": "test_node",
          "host": "127.0.0.1",
          "dialect": "mysql"
        },
    • development : process.env.NODE_ENV || 'development' 일 때 적용된다

    • username : MySql username

    • password : MySql 비밀번호

    • database : 데이터베이스 이름



    app.js

    • const { sequelize } = require('./models')
      
      sequelize.sync({ force: false })
        .then(() => {
          console.log('데이터베이스 연결')
        })
        .catch((err) => {
          console.log(err)
        })
    • force 옵션 :
        true 일 경우 서버 실행 시마다 테이블을 재생성한다



    실행

    • node app.js

    결과

    반응형

    '공부 > Node' 카테고리의 다른 글

    Node #1 프로젝트 시작하기  (0) 2021.07.09

    댓글

Designed by Tistory.