코드스테이츠(TIL 5일)

sequelize

이번 TIL은 갑자기 공중에 붕떠버린 경험을 했던 ORM의 Sequelize입니다.
시퀄라이즈는 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구라고 합니다..그게 무슨 말일까요?.. 자바스크립트 구문을 알아서 sql로 변환해주어서 좀더 의존성이 낮은 프로그래밍을 할 수 있도록 도와주며 또한 어느 정도 문법이 호환되므로 mySQL뿐만 아니라, mariaDB등 다른 데이터 베이스로 전환이 비교적 자유롭다고 나와있습니다. 그럼 먼저 ORM이란 제가 SQL문을 배울때 들었던 말이 요즘은 모두 ORM을 잘 사용하기때문에 현직에서 sql을 사용하는사람들도 sql문을 그렇게 잘 알지못하는 사람이 많다 그만큼 ORM을 잘알아둬야 된다 라고 들었습니다 ORM이란 클래스와 관계형데이터베이스와의 설정을 의미합니다. 객체지향 프로그래밍은 클래스를 사용하고 관꼐형 데이터베이스는 테이블을 사용합니다 여기서 객체 모델과 관계형 모델간에 불일치가 존재 하는데 이 객체간의 관계를 바탕으로 sql을 자동 생성하여 불일치를 해결하는 것이 ORM입니다.

그중에 시퀄라이즈의 가장큰 특징은 promise를 기본으로 지원해준다는 점입니다. promise의 장점은
1. 복잡한 비동기코드를 깔끔하고 쉽게 만들어준다.
2. chaining을 통해 값을 전달하거나연속된 일련의 작업을 처리 할수있다.
3. error handling에 대한 처리를 깔끔하게 할수있다.

자그럼 시퀄라이즈의 기본 사용법은 초기화를 진행하면 아래와 같은 폴더들이 생기고 설명은 이렇습니다.
config : 데이터베이스 설정 파일, 사용자 이름, DB 이름, 비밀번호 등의 정보 들어있다.
migrations : git과 비슷하게, 데이터베이스 변화하는 과정들을 추적해나가는 정보로, 실제 데이터베이스에 반영할 수도 있고 변화를 취소할 수도 있다.
models : 데이터베이스 각 테이블의 정보 및 필드타입을 정의하고 하나의 객체로 모은다.
seeders : 테이블에 기본 데이터를 넣고 싶은 경우에 사용한다.

그리고 모델생성하여 데이터베이스의 반영할려면 Sequelize CLI를 통해서 모델을 생성할 수 있고 마이그레이션을 통해 실제 데이터베이스에 반영할 수 있다

sequelize model:generate --name User --attributes user_id:integer,user_name:string

예를 들어서 sql문에 insert into user ( uuid, content ) values ( 1, "TEXT" );를
시퀄라이즈를 이용하여 js로 할땐

pool.query( "insert into user ( uuid, content ) values ( ?, ? )", [ 1, "TEXT" ], (err, rows)=>{
    if ( err ) {
        console.error( err );
        return;
    }

    if (rows.length > 0) {
        // 
    } else {
        // 
    }
});
const addData = await models.user.create({
    uuid: 1,
    content: "TEXT"
});

select * from user; 는

const userData = await models.user.findAll({});

// userData.length 로 비어있는지 체크한다.
if ( userData.length > 0 ) {} else {}

이런식으로 할수있다

좋은 웹페이지 즐겨찾기