#Cannot register cron job "XXXXXService@updateHomePage" because it is defined in non static provider
1 messages · Page 1 of 1 (latest)
this is my code for cron service -> @Injectable()
export class HomepageService {
constructor(
@InjectModel(HomePage.name, 'elekore_app') private readonly homePageModel: Model<HomePageDocument>,
@InjectModel(HomePageBanner.name, 'elekore_app') private readonly homePageBannerModel: Model<HomePageBannerDocument>,
private readonly newsService : NewsService
) { }
@Cron('1 * * * * *')
updateHomePage() {
//get homePage Banner
//get top 5 news by source Elekore Energy
this.getBanners()
}
getBanners = () =>{
return new Promise((resolve, reject)=>{
this.homePageBannerModel.find({}, {}).then((result) => {
console.log(result)
}).catch((err) => {
});
})
}
}
Please format your question or answer with Markdown formatting.
It leads to better readability and an easier time to spot problems.
For code blocks, you can wrap your block with three back ticks before and after the block, and after the first three back ticks you can add a language (like ts) to add syntax highlighting.
```ts
@Injectable()
export class MySuperAwesomeService {
constructor(@Inject('InjectionToken') private readonly dep: SomeDependency) {}
getRandomNumber(): number {
return Math.round(Math.random() * 1000);
}
}
```
That ☝️, becomes this 👇
@Injectable()
export class MySuperAwesomeService {
constructor(@Inject('InjectionToken') private readonly dep: SomeDependency) {}
getRandomNumber(): number {
return Math.round(Math.random() * 1000);
}
}
@Injectable()
export class HomepageService {
constructor(
@InjectModel(HomePage.name, 'elekore_app') private readonly homePageModel: Model<HomePageDocument>,
@InjectModel(HomePageBanner.name, 'elekore_app') private readonly homePageBannerModel: Model<HomePageBannerDocument>,
private readonly newsService : NewsService // when injecting this service getting the error mentioned in subject line
) { }
@Cron('1 * * * * *')
updateHomePage() {
//get homePage Banner
//get top 5 news by source Elekore Energy
this.getBanners()
this.newsService.getTopNews()
}
getBanners = () =>{
return new Promise((resolve, reject)=>{
this.homePageBannerModel.find({}, {}).then((result) => {
resolve(result)
}).catch((err) => {
console.log(err.stack)
});
})
}
}
The service is request-scoped, or depends on an request-scoped provider. These cannot be used in Crons (and some other types of providers, like websocket gateways), because there is no request at the time of execution.
how to resolve this or we have to duplicate our service file code in another non request scoped provider?