체인의정석

Sequalize와 raw query를 통하여 updated at, created at 만들기 본문

개발/database

Sequalize와 raw query를 통하여 updated at, created at 만들기

체인의정석 2023. 8. 25. 18:26
728x90
반응형

시퀄라이즈를 이용하게 되면 기본적으로 created at, updated at을 만들어 준다.

다만 이렇게 할 경우 raw query 대신에 시퀄라이즈의 문법을 써주어야 한다.

내가 이번에 작업했던 쿼리는 upsert() 라는 시퀄라이즈 함수를 사용하면 되었는데

나는 raw query로 작업을 하였다.

그러다 보니 raw query로 Update, create를 하는 방법을 찾게 되었다.

const table = sequelize.define(table_name, {
    createdAt: {
        type: DataTypes.DATE,
        field: 'created_at',
        defaultValue: sequelize.literal('CURRENT_TIMESTAMP'),       
    },
    updatedAt: {
        type: DataTypes.DATE,
        field: 'updated_at',
        defaultValue: sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
    }
}, {
    timestamps: false
}

다음과 같이 timestamps를 false로 두는 이유는 이것이 원래는 기본 값이 true인데 기본 값이 되면 시퀄라이즈가 알아서 업데이트랑 크리에이트를 해준다고 한다.

하지만 raw query에서 진행을 하려면 시퀄라이즈가 기본적으로 세팅해주는 것을 사용하지 않을 것이므로 따로 테이블도 정의해주고 테이블을 만들 때 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 구문을 사용하여 업데이트까지 진행 시킬 수 있ㄷ.ㅏ

이렇게 하면 insert, update, upsert 등을 로우쿼리로 해도 쿼리가 잘 되는 것을 볼 수 있었다.

728x90
반응형
Comments