Nestjs 个人学习笔记(3) Providers

65 阅读1分钟

Provider通俗点说就是一个用@Injectable()装饰器注释的类吧

基本用法

@Injectable()注释一个类

image.png

module中引入service 然后在providers中注入

image.png

Controller就可以使用注入的service

image.png

上面的形式相当于一种语法糖

自定义名称

@Module({
  imports: [UserModule],
  controllers: [AppController],
  providers: [
    {
      provide: 'Rika',
      useClass: AppService,
    },
  ],
})

自定义名称之后要用对应的Inject注入

constructor(@Inject('Rika') private readonly appService: AppService) {}

自定义值

使用useValue

image.png

image.png

工厂模式

如果服务之间相互有依赖或者逻辑处理,可以使用useFactory

说实话我有点不是很懂 但是想了一下工厂的工作模式 好像又懂了

异步模式

useFactory返回一个promise或者其他异步操作

{
      provide: 'sync',
      async useFactory() {
        return await new Promise((resolve) => {
          setTimeout(() => {
            resolve('sync');
          }, 1000);
        });
      },
    },

这里跟视频学的好像不太一样,视频是加载等1秒我是等他热更新启动等一秒

好像nest真没什么前途,弃坑了