我有一个具有特定功能的服务,并且有一个带有执行服务功能的路由的控制器,但现在我需要在 cron 作业中执行该功能,我正在使用 node-cron 库。问题是我是否在另一个打字文件中调用了该服务函数?
这是我的打字稿文件,其中有一个 cron 作业,我尝试执行服务功能。
cronJob.ts
@Injectable() export class SslCronJob { // @Inject(SslService) // private sslService: SslService;
constructor (
@Inject(SslService)
private readonly sslService: SslService
) {}
async upload() {
await this.sslService.upload()
cron.schedule('* * * * *', async () => {
console.log('running a task every minute');
try {
await this.sslService.upload()
} catch (err) {
console.log("error: ", err)
}
});
}
}
我尝试从 main.ts 执行这个
async function bootstrap() {
...
...
const sslService: SslService = new SslService()
let sslCron = new SslCronJob(sslService);
sslCron.upload()
}
但是我在执行时出现此错误,可以访问模型属性。
Cron.schedule
在单独的上下文中处理回调,因此它不知道 this.sslService
。
TaskScheduling
模块来执行此操作。这看起来像这样
@Cron('* * * * * *')
handleCron() {
await this.sslService.upload()
}
如果您想获得服务使用,也可以在
main.ts
const sslService: SslService = app.get(SslService)
let sslCron = new SslCronJob(sslService);
sslCron.upload()
如果您使用任务调度模块,那么您将不需要在 main.ts 中执行此操作