NestJS Providers : Create & Use Provider In NestJS In Hindi

📔 : NestJS Tutorials 🔗

NestJS providers ऐसे classes या objects होते हैं जो किसी specific functionality या service को provide करते हैं। यह classes NestJS के dependency injection (DI) system का essential part होते हैं।

इन्हे controllers या other components में inject किया जाता है ताकि application के logical parts को separate और modular बनाया जा सके।

इसका मतलब यह है कि providers वो components होते हैं जो services को encapsulate करते हैं और application के different parts में reuse hone लायक बनाते हैं।

NestJS Define Providers

Providers को define करना NestJS में काफी simple है। यह usually एक class होती है जिसे हम @Injectable() decorator के साथ mark करते हैं।

Example के लिए, एक basic service को define करते हैं जो एक string return करेगा।

import { Injectable } from '@nestjs/common'; @Injectable() export class AppService { getHello(): string { return 'Hello World!'; } }
  • @Injectable() decorator : यह बताता है कि यह class एक provider है और DI system के through inject हो सकता है।

  • AppService class : यह service एक method getHello() को expose कर रही है जो एक string return करता है।

NestJS Provider Example

NestJS में, controllers को specific functionality perform करने के लिए services कि need होती है, और यह services providers के through inject कि जाती हैं , यह DI का concept है।

Example के लिए, हम AppService को एक controller में inject करते हैं।

import { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() export class AppController { constructor(private readonly appService: AppService) {} @Get() getHello(): string { return this.appService.getHello(); } }
Explanation
  • AppService को inject करना : constructor(private readonly appService: AppService) के through हम service को inject कर रहे हैं। NestJS automatically service को inject करेगा।

  • getHello() : यह controller method AppService के method को call करता है और client को response देता है।

इस तरह से providers को inject करके, हम controllers के logic को clean और maintainable रख सकते हैं।

NestJS Providers & Dependency Injection

Dependency Injection एक ऐसा design pattern है जो components के बीच के dependencies को inject करता है, instead of directly creating new instances. यह pattern application को ज़्यादा modular और testable बनाता है।

NestJS में DI system automatically providers को manage करता है। जब हम कोई provider को inject करते हैं (जैसे AppService को AppController में), तो NestJS खुद उस provider का instance create करता है और inject करता है।

Benefits of Dependency Injection
  • Code Reusability : एक ही service को multiple controllers या components में reuse किया जा सकता है।

  • Testing Friendly : आप services को easily mock या replace कर सकते हैं unit testing के दौरान।

  • Loose Coupling : Dependencies को loosely coupled रखने से application का structure modular ban जाता है।

NestJS Register Provider in Module

Providers को NestJS के modules के अंदर register करना होता है ताकि उनका instance create किया जा सके और वो inject हो सकें।

Example के लिए, AppService को AppModule में register करते हैं।

import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [], controllers: [AppController], providers: [AppService], }) export class AppModule {}
  • providers: [AppService] : इस array में हम सारे providers को define करते हैं जो इस module के अंदर available होंगे।

जब हम AppModule को bootstrap करते हैं, NestJS automatically AppService का instance create करता है और उससे inject करता है जहां भी need हो।

NestJS Custom Providers & Aliases

कभी-कभी हमें default providers के अलावा custom providers कि need होती है। Custom providers तब useful होते हैं जब हमें कोई specific configuration या factory logic implement करना हो।

एक example देखते हैं , जिसमे एक custom provider को define किया गया है।

const customProvider = { provide: 'CUSTOM_SERVICE', useFactory: () => { return new CustomService(); }, };

आप फिर CUSTOM_SERVICE को किसी भी component में inject कर सकते हैं।

Explanation
  • provide : यह property specify करती है कि हमें इस service को किस नाम से inject करना है।

  • useFactory : इससे हम एक function define करते हैं जो हमें service का instance return करेगा।

फिर इस custom provider को module में इस तरह से register कर सकते हैं -

@Module({ providers: [customProvider], }) export class CustomModule {}

NestJS Providers Use Case

NestJS में providers का use हर जगह होता है , यह कुछ common use cases हैं जहाँ providers काम आते हैं।

  • Service Classes : Application का business logic handle करते हैं।

  • Repositories : Database operations को encapsulate करते हैं।

  • Third-party Libraries : अगर कोई external library को integrate कर रहे हैं, तो उसको एक provider के through manage कर सकते हैं।

  • Factories : Complex objects create करने के लिए factories को as providers use किया जा सकता है।

NestJS Providers Best Practices

  • Single Responsibility Principle (SRP) : हर provider का एक specific काम होना चाहिए। अगर एक provider काफी सारी चीज़ें handle कर रहा है, तो उससे divide करना best practice होता है।

  • Modularity : Providers को modules में logically divide करना चाहिए. जैसे UserModule में UserService, ProductModule में ProductService.

  • Avoid Circular Dependencies : Providers में circular dependencies से बचा जाना चाहिए, जिससे application crash होने का risk होता है।

  • Testing : Providers को mock या stub करके test करना काफी आसान होता है। हमेशा ensure करें कि आपके providers easily testable हूँ।

Conclusion

NestJS providers आपके application के core components हैं जो सारी functionality को encapsulate करते हैं। यह DI system के साथ काम करके आपके components को loosely coupled और ज़्यादा modular बनाते हैं।

यह आपको code को better structure करने, test करने, और maintain करने में help करते हैं।

Key Points
  • Providers NestJS architecture का core part हैं।

  • यह services, repositories, और other components को manage करते हैं।

  • Dependency Injection के through हम easily providers को inject कर सकते हैं।

  • Providers को modules के अंदर register करना जरूरी होता है।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook