Sequelize soft delete

M·2023년 8월 18일
0

TIL

목록 보기
33/42

soft delete란?

데이터를 데이터베이스에서 실제로 삭제하지 않고
삭제된 것으로 표시하는 기능을 의미한다.

지금까지는 그냥 데이터를 데이터베이스에서 지웠었는데,
데이터 보존 또는 복구를 위해 이번에는 soft delete를 사용해보려한다.

deletedAt 컬럼 추가

{
  deletedAt: {
	allowNull: false,
    type: Sequelize.DATE,
	defaultValue: null
  }
};

스키마에 deletedAt 컬럼을 추가해준다.
디폴트 값은 null로 추가한다.

paranoid 옵션 추가

{
  paranoid: true, // Enable soft delete
};

모델을 정의할때 paranoid 옵션을 true로 설정해준다.
이로써 soft delete 기능을 사용할 수 있다.
이제 destroy 메서드로 삭제를 하게되면 deletedAt에 삭제를 한 시간이 추가된다.

데이터 조회

기본적으로 soft delete된 데이터는 조회가 되지 않지만,
paranoid: false 속성을 넣으면 삭제한 데이터도 함께 조회가 된다.

Users.findAll({paranoid: false})

데이터 복구

restore 메서드를 사용해서 복구할 수 있다.

Users.restore({
	where:{id: 1},
});

완전히 데이터를 삭제하는법

force: true 옵션을 넣어서 destroy메서드를 사용하면 된다.

Users.destroy({
	where: {id: 1}, force: true,
});

soft delete를 사용하면 데이터의 보존과 복구를 관리하기 편리하며,
중요한 데이터를 실수로 삭제하는 일을 방지할 수 있다.

profile
자바스크립트부터 공부하는 사람

0개의 댓글