我的目标是使用 cronjobs 构建一个 nest.js 应用程序,每 10 秒访问一次 mongoDB。在这种情况下,我想从 mongo 读取,但将来我也想保存到 mongo。
我没有错误,但 cron 作业没有执行
项目在这里: https://github.com/meyetchristian4/nestJS-with-mongo-and-taskScheduler
答案 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