6/24 TIL

이승준·2023년 6월 24일
0
post-custom-banner

Sequelize

ORM(Object Relational Mapping)으로써 Javascript 객체(Object)와 데이터베이스의 관계(Relation)을 연결(Mapping) 해주는 도구

=> 관계형 데이터베이스를 편하게 해주는 도구..
=> mongoDB는 NoSQL 데이터베이스였다. 각각의 장단점은 다음에

  • 명칭이 조금 다르다

👍필요한 패키지

  • sequelize는 우리가 Node.js 에서 sequelize를 사용할 수 있게 해요!
  • sequelize-cli는 우리가 Sequelize를 터미널에서 사용할 수 있는 도구를 설치하는 명령어예요!
  • nodemon은 개발 코드가 변경되었을 때 자동으로 서버 재시작을 해주는 패키지에요!
  • mysql2는 Node.js 에서 Sequelize를 이용해 MySQL을 더욱 쉽게 조작할 수 도록 도와주는 패키지에요!
    만약 Sequelize를 사용할 때, mysql2 패키지가 설치되어 있지 않으면 에러가 발생합니다!

🖱️초기설정과정

1. npx sequelize init

  • sequelize를 초기화 하여 sequelize를 사용할 수 있는 환경이 된다
  • 이 때 여러가지 폴더 및 파일들이 생긴다

2. config/config.json 파일 설정

  • 데이터베이스 설정
  • 깃헙에 노출안되게 조심한다

3. npx sequelize db:create

  • config/config.json 파일에 설정한 database에 설정한 이름으로 DB를 만든다

⭐ model, migration

  • 설명
    • migration은 Sequelie CLI를 이용해 MySQL에 테이블을 생성하기 위해 사용됩니다.
    • model은 특정 TableColumn의 속성값을 입력하여, MySQL과 Express 프로젝트를 연결 (Mapping)시켜줍니다.
    • 마이그레이션 => DB와 연결, 모델 => JS파일과 연결

4. npx sequelize model:generate --name Posts --attributes title:string ···

  • Posts라는 이름의 모델을 생성
  • 제작날짜-create-posts.js 파일도 같이 만들어짐

5. npx sequelize db:migrate

  • 제작날짜-create-posts.js 파일을 기반으로 DB에 테이블 생성
  • 질문: DATABASE는 config 파일을 기준으로 설정된건가??

⚠️ migration 파일에서 컬럼생성 시
defaultValue: Sequelize.fn("now") << 디폴트 시간설정
defaultValue: Sequelize.NOW => 오류

6. 모델 설정

  • 마이그레이션 파일과 동일한 문법을 사용하고 있어서 항목을 복붙
  • type: Sequelize.^*%& 부분은 모델 파일은 Sequelize 인자를 받지 않기 때문에 Datatypes 으로 변경해줘야한다.
post-custom-banner

0개의 댓글