SkillByAIइंटरैक्टिव संस्करण खोलें →

पाठ 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 अलग से चुनना पड़ता है।