sequelize 5

Sequelize로 MySQL 트랜잭션 적용하기

managed와 Unmanaged 트랜잭션 sequelize에서 Transaction는 어떻게 사용할 수 있는지 알아보자 sequelize에서 트랜잭션을 적용하는 방법은 크기 Managed 방식과 Unmanaged 방식으로 나뉜다. // Managed const { sequelize, User } = require('../models'); // 트랜잭션의 콜백으로 유저 생성 로직을 처리합니다 const result = await sequelize.transaction(async (t) => { const user = await User.create( { nickname: 'apple', age: 18, }, { transaction: t } // 해당 로직이 트랜잭션으로 묶여있음을 명시함 ); retur..

MySQL Sequelize에서 테이블에 필드(컬럼) 추가하기

웹사이트 프로젝트에서 서비스가 추가되다 보니 기존에 작성했던 ERD를 수정해야 하는 상황이 발생했다. 처음부터 ERD를 잘 짰으면 좋았겠지만 그러기는 쉽지 않은 것 같다. 어쨌든 이렇게 되면 특정 테이블 또는 테이블의 컬럼을 추가해야하는 상황이 발생한다. 이럴 때는 마이그레이션을 추가해주면 된다. npx sequelizse db:migrate 명령을 수행하면 migrations 폴더 내 js 파일을 순차적으로 실행하므로 기존 파일들 뒤에 신규 마이그레이션 파일을 추가해줌으로서 컬럼 또는 테이블을 추가해주는 명령을 더해주면 되는 것이다. 먼저 아래 명령을 실행하면 새로운 마이그레이션 파일이 생성된다. --name 이후의 이름은 자유롭게 지으면 되나 가급적 의미가 담겨있으면 좋을 것 같다. 아래 예시의 경우..

Sequelize로 MySQL JOIN하기

MySQL의 JOIN 적용을 위한 준비 게시글 작성 사이트를 예시로 들어보자. 데이터베이스에는 유저 테이블과 게시글 테이블이 구분되어 있을 것이고, 게시글 테이블을 통해 해당 게시글의 작성자가 누구인지, 좀 더 깊게 들어가서 작성자의 이메일은 무엇인지 알기 위해서는 두 테이블 간 JOIN 작업이 필요할 것이다. sequelize를 통해 두 테이블을 JOIN 해서 정보를 획득하는 방법에 대해 알아보자 두 테이블의 관계 설정 // 유저 모델과 포스트 모델 간 1대 다 관계 설정 // models/user.js static associate(models) { this.hasMany(models.Post, { sourceKey: 'id', foreignKey: 'userId', }); } // models/po..

Sequelize로 모델 생성 및 테이블 연동하기

모델생성 및 테이블 연동하기 마이그레이션을 통해 테이블을 생성하면 아래와 같이 models 폴더 내 members.js파일이 함께 생성된다. 코드를 보면 마이그레이션과 비슷한 형태로 생성된 것을 확인할 수 있다. const { Model } = require('sequelize'); module.exports = (sequelize, DataTypes) => { class Member extends Model {} Member.init( { name: DataTypes.STRING, team: DataTypes.STRING, position: DataTypes.STRING, emailAddress: DataTypes.STRING, phoneNumber: DataTypes.STRING, admissionD..

node에서 MySQL 데이터베이스 활용과 ORM (1)

기본 환경 설정하기 node에서 MySQL 데이터베이스를 사용하기 위해 Community Server 설치가 필요하다. https://dev.mysql.com/downloads/ 또한 node와 데이터베이스를 ORM 방식으로 사용하기 위해 추가적인 npm 패키지 설치가 필요하다. npm install mysql2 sequelize sequelize-cli 위 패키지 중 sequelize-cli는 필수 패키지는 아니나 데이터베이스 생성이나 마이그레이션 등을 cli 명령으로 가능하게 하여 작업의 편의성을 더해준다. 💡 Tip ORM은 데이터베이스에 있는 객체를 하나의 객체에 매핑시키는 기술 데이터베이스 문법을 잘 모르더라도 자바스크립트 언어로 비교적 쉽게 상호작용을 하기 위해 사용된다. 이제 ORM 환경 설..