Sequelize(Node.js ORM)

Siwoo Pak·2021년 10월 18일
0

DB

목록 보기
13/13

1. Sequelize

  • 프로미스 기반 Node.js의 ORM 되시겠다.
  • 지원하는 DB:Postgres, Mysql, MariaDB, SQLite, MSSql를 지원한다.

2. 설치

# sequelize install
$ npm install --save sequelize
# 마이그레이션을 사용하기 위해 sequelize-cli 설치
$ npm install --save-dev sequelize-cli

3. 초기화

$ npx sequelize-cli init
  • 초기화시 4개의 폴더 생성
    • /config: DB에 연결 관련된 부분
    • /models: 모델이 들어가 있는 폴더
    • /migrations: 마이그레이션 정보가 들어있는 폴더
    • /seeders: 시드 파일이 들어있는 폴더
  • /config/config.json
    • DB에 연결할 때 필요한 정보가 들어있다. json형식이니까 값은 ""로 감싸줘서!
    • dialect 속성은 어떤 DB를 쓰는지에 따라서 그 DB명을 넣어주시면 되겠다.

4. 모델 생성

# model:generate 사용
# --name 옵션은 모델명이며, 나중에 마이그레이션시 테이블명은 복수명으로 생성된다(User=>Users)
# --attribute 모델의 속성(칼럼명:데이터타입)
$ npx sequelize-cli model:generate --name url --attributes "url:string, title:string, visit:integer"
  • 위의 커맨드 입력시 /models의 url.js 파일생성
  • /migrations의 현재날짜시간-create-모델명.js 파일생성

5. 마이그레이션 실행

  • 전 단계까지 데이터베이스에 아무것도 삽입하지 않은 상태
  • /migration에 생성된 파일
    • 데이터타입을 명시할때 type속성
    • NULL값을 허용유무는 allowNull 속성
    • date타입의 기본값으로 now()를 적용하고 싶으면
      Sequelize.fn('now')로, mysql에선 이렇게 해야 적용됨
  • 이제 데이터베이스에 우리가 작성한 모델을 통해 테이블 생성할려면,
# 마이그레이션 실행
$ npx seqeulize-cli db:migrate
# 실행 취소: 가장 최근의 마이그레이션
$ npx sequelize-cli db:migrate:undo
# 실행 취소: 초기상태로, SQL Rollback 느낌
$ npx sequelize-cli db:migrate:undo:all
# 실행 취소: 해당 마이그레이션으로 되돌리기, 이거는 rollback savepoint느낌
$ npx sequelize-cli db:migrate:undo:all --to 해당날짜시간-create-모델파일명.js

  • Mysql 5.7버전 이하에선 Integer타입은 int(11),
    String타입은 varchar(255), Date타입은 DateTime으로 테이블의 데이터타입이 적용됨.
  • 여기서 알아둬야 할건 varchar의 괄호안에 숫자는 길이(크기)를 나타내는 거라면, int의 괄호는 숫자를 포함한 0의 자릿수를 말한다. 만약 int(2)면 1의 데이터를 넣었으면 01로 저장되게 된다. zerofill을 추가했을 때!
  • visits, createdAt, updatedAt의 기본값이 잘 들어가 있다.
  • 여기서 알아두어야 할점은 만약 모델의 내용과 migration의 내용을 수정한 경우 반영하고 싶으면, 실행취소한 뒤에 다시 마이그레이션을 실행하면 된다.

6. 시드파일 실행

# 시드파일 실행
$ npx sequelize-cli db:seed:all
# 시드파일 취소: 가장 최근의 시드
$ npx sequelize-cli db:seed:undo
# 시드파일 취소: 특정 시드 취소
$ npx sequelize-cli db:seed:undo --seed name-of-seed-as-in-data
# 시드파일 취소: 모든 시드파일 취소
$ npx sequelize-cli db:seed:undo:all

7. Associations를 이용한 조인 테이블 구현

  • user 모델 생성
# model:generate를 이용, user 모델 생성
$ npx sequelize-cli model:generate --name user --attributes fullName:string,email:string
  • urls 테이블에 필드 추가 및 외래키 설정
# 필드 추가 및 fk 설정할 마이그레이션 파일 생성
$ npx sequelize-cli migration:generate --name addUserIdColumn
  • 새로 생성된 마이그레이션 파일 수정 후 마이그레이션 실행
  • 결과 화면(urls 테이블의 필드 추가 및 외래기 설정확인)
  • 1:N 관계
// models/index.js 다음 내용 추가
const {url, user} = sequelize.models;
url.belongsTo(user);
user.hasMany(url);

참고

profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글