पाठ 7 / 34
Providers और Services
Business logic को @Injectable services में रखें, उन्हें providers के रूप में register करें और अन्य modules के लिए export करें।
Service की anatomy
एक service @Injectable() के साथ एक क्लास है जो आपके business logic को रखती है—data fetch करना, rules validate करना, आदि।
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {
private users = [];
findAll() {
return this.users;
}
create(user) {
this.users.push(user);
return user;
}
}Modules में Providers
Module के providers array में services को register करें; अगर दूसरे modules को उनकी ज़रूरत हो तो उन्हें export भी करें।
useValue से custom providers
constants या mocks के लिए { provide: 'API_KEY', useValue: 'abc' } use करें और @Inject('API_KEY') से inject करें। strings का runtime type नहीं होता, इसलिए @Inject चाहिए।
त्वरित जाँच
त्वरित जाँच: Nest provider का default scope क्या है?
- हर request पर नया instance
- हर injection पर नया instance
- एक shared instance (singleton)
Answer
एक shared instance (singleton) — default में Nest एक ही instance बनाकर reuse करता है। request scope अलग से चुनना पड़ता है।