如何注入一个UseCase在另一个UseCase在NestJS?



我有两个UseCases命名,FirstUseCaseSecondUseCase

FirstUseCases

export class FirstUsecases {
constructor(
private readonly something: Something
) {}
async execute(): Promise<any> {
console.log("This is FirstUsecases class.");
}
}

SecondUseCases

export class SecondUsecases {
constructor(
// How to inject FirstUsecases here?
private readonly firstUseCases: FirstUsecases ) {}
async execute(): Promise<any> {
this.firstUseCases.execute();
}
}

我想把FirstUsecases注入SecondUsecases类。
注意:FirstUsecasesSecondUsecases位于同一个模块MyProxyModule

MyProxyModule

static register(): DynamicModule {
return {
module: MyProxyModule,
providers: [
{
inject: [FirstRepository],
provide: "FIRST_USECASE",
useFactory: (firstRepository: FirstRepository) => new FirstUsecases(firstRepository),
},
{
inject: [SecondRepository],
provide: "SECOND_USECASE",
useFactory: (secondRepository: SecondRepository) => new SecondUsecases(secondRepository),
},,
]
}
}

如何将FirstUsecases注入SecondUsecases?

如果您像那样使用new,则您负责传递类所需的依赖项。要获得FirstUsecases的实例,您可以将其注入令牌添加到inject数组中,就像添加SecondRepository并将其传递给构造函数一样。

static register(): DynamicModule {
return {
module: MyProxyModule,
providers: [
{
inject: [FirstRepository],
provide: "FIRST_USECASE",
useFactory: (firstRepository: FirstRepository) => new FirstUsecases(firstRepository),
},
{
inject: [SecondRepository "FIRST_USECASE"],
provide: "SECOND_USECASE",
useFactory: (secondRepository: SecondRepository, firstUsecase: FirstUsercase) => new SecondUsecases(secondRepository, firstUsecase),
},,
]
}
}

最新更新