떨면뭐하니 - 휴면 회원 관리

김민섭·2022년 12월 28일
0

떨면뭐하니

목록 보기
3/5

휴면회원 관리

이번 프로젝트에서는 추후에 업데이트 될 서비스를 위해 실제로 서비스를 사용하는 유저를 구별할 필요성이 있었다.

그리하여 한달동안 로그인을 하지 않은 유저는 휴면회원 처리를 하여 이메일 인증을 해야만 사이트를 이용할 수 있게 하였다.

주기적으로 정해진 시간에 로직을 실행시킬 수 있는 라이브러리를 찾아보다가 Node-schedule을 찾게 되어 적용하였다.

내가 생각한 방법

  1. DB에 LoginHistory (마지막으로 로그인한 기록), expiration (휴면상태인지 아닌지를 표현) 이렇게 두 가지의 column을 만든다.
  2. 로그인을 할 때마다 그 계정의 LoginHistory를 현재 날짜와 시간으로 업데이트 한다.
  3. 매일 00시 00분 마다 DB에 저장된 모든 유저들의 LoginHistory에 1달을 더한다.
  4. 1달을 더한 값이 현재의 시간보다 과거라면 expiration을 true로 바꿔서 휴면계정으로 만든다.

구현 과정

1번과 2번은 mongoose를 이용한 findOneAndUpdate를 사용하여 평소에 하던 것처럼 손쉽게 할 수 있었기 때문에 생략했다.

3번 같은 경우는 nodeschedule을 이용했다.
nodeschedule의 시간을 매일 00시 00분으로 맞춰놓고 유저 DB에서 마지막 로그인 기록을 가져온 뒤 setMonth를 사용해서 한달을 더해 주었다.

더하는 과정에서 한달을 더해주는 기능은 함수로 따로 만들어서 관리를 해주었다.

구현 코드

profile
getting ready to run

0개의 댓글