You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NestJS中将一个UseCase注入到另一个UseCase中?

实现FirstUsecases注入到SecondUsecases的方案

要在NestJS的MyProxyModule中完成FirstUsecases到SecondUsecases的注入,只需调整模块内SECOND_USECASE的provider配置,具体操作如下:

1. 确认SecondUsecases的构造函数定义

你的SecondUsecases类构造函数已经正确声明了依赖,只需补充原本需要的SecondRepository参数即可:

export class SecondUsecases {
  constructor(
    private readonly firstUseCases: FirstUsecases,
    private readonly secondRepository: SecondRepository
  ) {}

  async execute(): Promise<any> {
    this.firstUseCases.execute();
  }
}

2. 修改MyProxyModule中SECOND_USECASE的provider配置

在模块的register方法里,更新SECOND_USECASE的inject数组和useFactory逻辑,把FirstUsecases的令牌加入依赖注入列表:

static register(): DynamicModule {
  return {
    module: MyProxyModule,
    providers: [
      {
        inject: [FirstRepository],
        provide: "FIRST_USECASE",
        useFactory: (firstRepository: FirstRepository) => new FirstUsecases(firstRepository),
      },
      {
        // 注入数组添加FirstUsecases的令牌"FIRST_USECASE"
        inject: [SecondRepository, "FIRST_USECASE"],
        provide: "SECOND_USECASE",
        // useFactory参数顺序与inject数组对应,先接收SecondRepository,再接收FirstUsecases实例
        useFactory: (secondRepository: SecondRepository, firstUseCases: FirstUsecases) => 
          new SecondUsecases(firstUseCases, secondRepository),
      },
    ]
  }
}

关键注意点

  • 因为FirstUsecases是通过令牌"FIRST_USECASE"注册的,注入时必须使用该令牌作为依赖标识,不能直接用类名。
  • inject数组的顺序必须和useFactory的参数顺序完全一致,NestJS会按此顺序注入对应实例。

内容的提问来源于stack exchange,提问作者Hossein Safari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:50:26