nest 提供者

nest 提供者

service module controller
controller 中能使用service 的原因是 service向module中注入的自己 一个健值对
controller通过键 拿到service

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';

@Module({
  imports: [UserModule],
  controllers: [AppController],
  providers: [AppService],  // 这里进行了 service注入
})
export class AppModule {}

以上是简写的方式

可以通过一下修改

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';

@Module({
  imports: [UserModule],
  controllers: [AppController],
  providers: [{
   provide:'abc',
   useclass:AppService
   }],  // 这里进行了 service注入
})
export class AppModule {}

之后controller中默认的健就会找不到 所以需要手动修改

import { Controller, Get, Inject } from '@nestjs/common';
import { AppService } from './app.service';
import { UserService } from './user/user.service';

@Controller()
export class AppController {
   // 通过在这里添加Inject装饰器 手动赋予键
  constructor(@Inject('abc') private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    
    return this.appService.getHello();
  }
}

还可以通过此方法传常量

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';

@Module({
  imports: [UserModule],
  controllers: [AppController],
  providers: [{
    provide:'abc',
    useClass:AppService
  },
  {  // 注入一个字符串
    provide:'aog',
    useValue:'123456789'
  }],
})
export class AppModule {}

在这里插入图片描述

还可以传递一个工厂方法
新建一个service类

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService2 {
  getHello(): string {
    return 'eihei!';
  }
}

import { Inject, Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AppService2 } from './app.service2';
import { UserModule } from './user/user.module';

@Module({
  imports: [UserModule],
  controllers: [AppController],
  providers: [AppService2,{ //注入 新创建的
    provide:'abc',
    useClass:AppService
  },
  {
    provide:'aog',
    useValue:'123456789'
  },
  {
    provide:'factory',
    inject:[AppService2],
    useFactory(AppService:AppService2):string{
      
      return AppService.getHello()
    }
  }],
})
export class AppModule {}

在这里插入图片描述
可以是一个异步的方法

 {
      provide: 'factory',
      inject: [AppService2],
      async useFactory(AppService: AppService2) {
        return await new Promise((r )=> {
          setTimeout(() => {
            r(AppService.getHello() + '6')
          }, 2000)
        })

      }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值