Node.js 백엔드에서 사용되는 유명한 ORM들 중 하나인 Sequelize 사용법을 공식 문서에 기반하여 정리하고자 한다. 일단 Sequelize는 Sequelize is a promise-based Node.js ORM for Postgres, MySQL, Mar
이번 튜토리얼에서는 Sequelize로 MySQL 데이터베이스를 사용할 것이다. 이 글을 읽는 독자가 MySQL 서버 설치 및 실행정도는 할 수 있을 것이라 믿으며 생략하겠다. 일단 MySQL 서버가 실행되고 있는 상태라고 가정한다. 그리고 추가적으로 ORM을 사용해서
University 데이터베이스에 각각 다음과 같은 컬럼들을 가진 총 5개의 테이블을 만들 것이다. Student 테이블(학생) : registrationNum | name | ageScholarshipAccount(장학금용 통장) : accountNum | valid
models/index.js 파일이 공개하는 db 객체를 한번 사용해보자. sequelize_sample 디렉토리 안에 app.js라는 파일을 만들고 아래와 같은 코드를 써보자. 지금 db 객체의 sequelize 객체는 각 모델 클래스를 생성할 때 옵션에 들어갔던
이전 글에서는 코드로 실제 테이블들을 생성해보았다. 하지만 이렇게 코드로 하지 않고 sequelize-cli를 사용해서도 할 수 있다. 그리고 개인적으로는 이 방법을 추천한다. 잠깐 생성되었던 4개의 테이블을 모두 삭제해보자. 그리고 떠올려보자. 혹시 이전에 모델들을
이제 여러 테이블들을 만들었으니 각 테이블에 초기 데이터(seed)를 넣어보겠다. 그런데 이때 고민하면 좋을 주제가 하나 있다. 일단 Student 테이블에 학생 정보를 하나 추가한다고 생각해보자. 그럴 때는 (1)처럼 db 객체의 Student 모델 객체를 끄집어
사실 seed 데이터를 삽입하는 부분도 sequelize-cli로 처리할 수 있습니다. 어떻게 하면 되는지 보여드릴게요. 일단 이전 영상에서 생성했던 Students 테이블의 모든 row들을 삭제하고 오세요. 일단 아래와 같은 명령을 실행해봅시다. seed:genera
자, 이제 드디어 테이블 간의 관계를 설정할 것이다. 지금 존재하는 테이블들을 간단히 살펴보자. Students 테이블 ScholarshipAccounts 테이블 Courses 테이블 Professors 테이블 테이블 간의 관계는 크게 1:1, 1:M(1대다), M
sequelize-cli로 foreign key를 설정하는 것도 가능하다. 잠깐 migrations 디렉토리 안을 보자. 이 각각의 파일 중에서 foreign key 설정을 해줘야 하는 것들을 아래와 같이 수정하면 된다.지금 가장 마지막에 student_ID라고 하는
이제 본격적으로 데이터 조회, 삽입, 수정, 삭제 등의 작업을 수행하기 전에 각 테이블에 적절한 seed 데이터를 넣겠다. 아래 과정을 순서대로 수행하면 된다.지금 여기 나온 순서대로 seed 파일을 생성해주세요. 이 순서를 지키지 않으면 아직 생성되지 않은 테이블의
이때까지 우리는 데이터베이스 세팅을 위한 각 작업을 처리할 때 (1) sequelize 객체를 사용해서 코드상으로 각 작업을 처리하는 방법(2) sequelize-cli 명령을 사용해서 migration 파일과, seed 파일들을 생성하고 그 안에 필요한 내용을 채워넣
이제 각 테이블에 초기 데이터도 삽입해보았으니 간단한 CRUD 작업을 하는 법을 알아보자. 이것은 이미 배웠습니다. 이렇게 build-save 메소드를 쓰거나create 메소드를 쓰는 방법이 있었죠.데이터 조회는 어떻게 할까요? 여러 메소드들이 있지만 일단 findAl
ORM을 쓸 때는 역시 특정 테이블 하나만 조회하는 것이 아니라 foreign key로 엮인 (성능상 일부러 foreign key 설정을 안 할 수도 있겠지만..) 다른 테이블의 것들도 함께 조회할 때 그 시점을 정하는 부분이 중요한 쟁점이다. 이때 메인 테이블과
Sequelize에서 트랜잭션에는 크게 두 가지 종류가 있다. Unmanaged transactions: 커밋과 롤백이 별도의 메소드에 의해 직접 호출되어야 하는 트랜잭션Managed transactions: 별 문제가 없으면 Sequelize가 자동으로 커밋해주고,