# Providers और Services — NestJS: Scalable Node.js APIs बनाना

Source: https://www.skillbyai.com/hi/nestjs/nestjs-providers-services

> Business logic को @Injectable services में रखें, उन्हें providers के रूप में register करें और अन्य modules के लिए export करें।

## Service की anatomy

एक service `@Injectable()` के साथ एक क्लास है जो आपके business logic को रखती है—data fetch करना, rules validate करना, आदि।

```typescript
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` चाहिए।

त्वरित जाँच

**Quiz:** Nest provider का default scope क्या है?

- [ ] हर request पर नया instance
- [ ] हर injection पर नया instance
- [x] एक shared instance (singleton)

*Answer:* एक shared instance (singleton). default में Nest एक ही instance बनाकर reuse करता है। request scope अलग से चुनना पड़ता है।
