NestJS中的handleInterval不适用于猫鼬

时间:2021-05-24 08:52:21

标签: nestjs

我的目标是使用 cronjobs 构建一个 nest.js 应用程序,每 10 秒访问一次 mongoDB。在这种情况下,我想从 mongo 读取,但将来我也想保存到 mongo。

我没有错误,但 cron 作业没有执行

项目在这里: https://github.com/meyetchristian4/nestJS-with-mongo-and-taskScheduler

1 个答案:

答案 0 :(得分:0)

应用模块


// app.module.ts
@Module({
  imports: [
    ScheduleModule.forRoot(),
    TaskModule,
    MongooseModule.forRoot('mongodb://localhost:27017/nest'),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

您尚未导入 ScheduleModule 并初始化侦听器,因此虽然 TasksModule 已注册,但侦听器仅注册为普通方法。

任务服务

可选

为了让您能够如我所愿地获得 allData(您已将其注释掉),您可以更改您的方法:


@Injectable()
export class TasksService {
  private readonly logger = new Logger(TasksService.name);

  constructor(@InjectModel(info.name) private infoModel: Model) {}

  @Interval(10000)
  async handleInterval() {
    this.logger.debug('Called every 10 seconds');
    let allData = await this.findAll();
    console.log(`Mongo: ${allData}`); // or JSON.stringify(allData)
  }

  async findAll(): Promise {
    return this.infoModel.find().exec();
  }
}

输出:

[Nest] 11320   - 24/05/2021, 17:21:44   [TasksService] Called every 10 seconds

了解详情

  1. https://docs.nestjs.com/techniques/task-scheduling#installation