일기/TIL
TIL: Today I Learned 91일차 [ 최종프로젝트 21일차 ]
표자
2023. 3. 28. 00:05
728x90
반응형
1. 문제
회원정지시 3일,7일,30일로 하려고 할때, 자동화하여
정지 풀어주는 로직을 고민하고 있었다.
2. 시도해본 것들
처음에는 타이머를 생각했으나, 서버가 꺼지면 자동으로 초기화되는 등
실제 서비스 제공하기는 어렵다.
3. 해결과정
타이머의 대체제를 찾던 도중 'node-cron'이라는 기능을 알게 되었다.
실제 서비스에서도 사용할 수 있고, 사용하는 방법도 간단했다.
4. 알게 된 점
타이머와 node-corn의 차이점을 알게 되었고,
corn의 경우, 서비스 코드에서 작성하는것이 아니라
app.module.ts 또는 main.ts 같은 곳에 작성해야 서비스가 사용될때마다 주기적으로
이벤트를 줘서 작동시킬 수 있다.
import * as cron from 'node-cron';
import { AdminModule } from './apis/administrator/admin.module';
import { AdminService } from './apis/administrator/admin.service';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRootAsync({
useClass: TypeOrmConfigService,
}),
AuthModule,
],
})
export class AppModule implements OnModuleInit {
constructor(private adminService: AdminService) {}
onModuleInit() {
cron.schedule('* * * * *', async () => {
await this.adminService.liftBanOnExpiredUsers();
});
}
}
728x90
반응형