More NestJS libs on alariblog.ru
NestJS cron package allows you easily setup cron for your controllers or services.
npm i nestjs-cron
To use cron, decorate your class with @Scheduled()
and method with @Cron()
.
Your class has to be a provider or a controller that is declared in any module.
import { Cron, Scheduled } from 'nestjs-cron';
@Injectable()
@Scheduled()
export class MyClass {
@Cron('* * * * * *')
async myMethod() {
//...
}
}
'* * * * * *'
- is a standart cron notation. In this example it will be triggered every second.
Additionaly you can use options:
@Cron('* * * * * *', {
launchOnInit: true,
sync: true,
})
- launchOnInit - Launch job one time right after start
- sync - Wait for method to finish before launching next tick if your function takes more time then cron.
To intercept cron you can use @CronIntercepter
decorator. You pass class that implements CronIntercepterClass
as a parameter. It has one intercept
method that returns Promise<boolean>
.
export class MyIntercepter implements CronIntercepterClass {
async intercept() {
return false;
}
}
Usage example:
@Scheduled()
@Injectable()
export class AppService {
@CronIntercepter(MyIntercepter)
@Cron('* * * * * *')
getHello() {
console.log('test');
}
}
If intercept
method returns true
your cron will run as planned. If false method run will be skipped.