[Node.js] Mysql 시퀄라이즈 요약
Node.js

[Node.js] Mysql 시퀄라이즈 요약

반응형

[Node.js] Mysql 시퀄라이즈 요약





시퀄라이즈는 Mysql 작업을 쉽게 할 수 있도록 도와주는 라이브러리입니다. ORM(객체 관계 매핑)으로 분류되는데요.


자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구 역할을 합니다.



시퀄라이즈를 사용하는 이유?


자바스크립트 구문을 알아서 SQL로 바꿔줍니다. 따라서 SQL 언어를 직접 사용하지 않아도 자바스크립트만으로 MySQL을 조작할 수 있습니다.




시퀄라이즈 설치

express learn-sequelize --view=pug


폴더로 이동해 npm 패키지 설치

cd learn-sequelize

npm i


시퀄라이즈에 필요한 패키지 설치 (sequelize, mysql2)

npm i sequelize mysql2

npm i -g sequelize-cli ( sequelize 커맨드 사용을 위해 전역 설치 )

sequelize init




MySQL 연결


시퀄라이즈를 통해 익스프레스와 MySQL을 연결해야 합니다. app.js에 아래와 같이 추가합니다.


var sequelize = require('./models').sequelize;

sequelize.sync();


sync를 사용하면 서버 실행 시 알아서 MySQL과 연동할 수 있습니다.




시퀄라이즈로 CRUD를 작성해보면서 알게된 중요 포인트 정리


1. 시퀄라이즈는 알아서 id를 기본키로 연결해줌. 따라서 id 컬럼은 적어줄 필요 X


2. MySQL 테이블 컬럼 내용과 정확히 일치하는 모델을 만들어야 연결 가능. 만약 npm start 진행 시 오류가 나면, model에 오타가 있거나 컬럼이 잘못되지 않았는지 확인하자


3. 시퀄라이즈로 모델 정의 시 기본 형태


module.exports = (sequelize, DataTypes) => {

return sequlize.define (1, 2, 3)

}

1 : 모델 이름 -> ex. 'user'

2 : 모델 컬럼 -> ex. name: { type : DataTypes.STRING(20) }, age: { type : DataTypes.INTEGER.UNSIGNED },

3 : 테이블 옵션 -> ex. { timestamps: true }



4. 시퀄라이즈와 MySQL의 자료형 차이점


MySQL : 시퀄라이즈

VARCHAR : STRING

INT : INTEGER

TINYINT : BOOLEAN

DATETIME : DATE

NOT NULL : allowNull

DEFAULT : defaultValue


5. Date에서 현재 시간을 나타내는 now()를 시퀄라이즈에서 사용하려면, sequlize.literal('now()')로 작성. literal 메서드는 인자로 넣은 문자 그대로 사용하는 역할


6. define 메서드의 세 번째 인자는 테이블 옵션. timestamps는 createdAt과 updatedAt 컬럼을 생성해주고, 로우가 생성될 때와 수정될 때 시간이 자동으로 입력된다.


7. paranoid는 timestamps가 true일 때 자주 사용. deletedAt 컬럼을 추가해주며 로우 삭제 시 제거 날짜를 기록 (데이터 복구에 활용)


8. config.json에서 development는 개발 시, prodection은 배포 시, test는 테스트 시 알맞게 이용


9. 관계 정의

외래키로 연결된 테이블이 존재하면 관계를 정의해야 함. 

각 관계시 사용하는 메서드

1 : N -> hasMany, belongsTo

1 : 1 -> hasOne, belongsTo

N : M -> hasMany, belongsToMany


10. 시퀄라이즈 Op 연산자는 초과(Op.gt), 미만(Op.lt) 등에 사용

반응형