Typescript Nestjs和控制器中的服务继承
我正在尝试为用户模块编写一些通用代码,这将很容易扩展。 我在依赖性方面有问题。我有UserService、User entity、ExtendeDeduserService和ExtendedUserModule以及ExtendedUserController 我想定义ExtendeDeduserController将接收一个扩展typeof UserService的服务(因为我想在模块中使用此控制器,保存时我想使用任何相关服务保存更多信息) 如果我这样做,当我发送ExtendeDederUserService时,我会遇到依赖性问题,即使它扩展了UserService Nest无法解析EmailUserController(?)的依赖项。请确保索引[0]处的参数UserService在EmailUserModule上下文中可用 模块看起来是这样的:Typescript Nestjs和控制器中的服务继承,typescript,nestjs,Typescript,Nestjs,我正在尝试为用户模块编写一些通用代码,这将很容易扩展。 我在依赖性方面有问题。我有UserService、User entity、ExtendeDeduserService和ExtendedUserModule以及ExtendedUserController 我想定义ExtendeDeduserController将接收一个扩展typeof UserService的服务(因为我想在模块中使用此控制器,保存时我想使用任何相关服务保存更多信息) 如果我这样做,当我发送ExtendeDederUser
@Module({
imports: [
RoleModule,
TypeOrmModule.forFeature([EmailUser]),
JwtModule.register({
secret: jwtConstants.secret,
signOptions: { expiresIn: '100min' },
})
],
providers: [
EmailUserService, // Extends UserService
{
provide: 'CONFIG_OPTIONS',
useValue: options,
},
],
exports: [EmailUserService],
controllers: [EmailUserController]
})
有什么想法吗?
谢谢 确保在
EmailUserModule
请确保将
UserService
放在UserModule
中的providers
部分,NestJS所做的是尝试解决依赖关系,是获得提供确切类的内容,而不是满足相同接口的内容,如果考虑扩展,情况就是这样。这将特别令人困惑,因为这可能适用于多个类
标准解决方案是使用自定义类提供程序(请参阅)
您可以如下方式更新模块:
providers: [
EmailUserService,
{
provide: UserService,
useClass: EmailUserService, // Extends UserService
},
{
provide: 'CONFIG_OPTIONS',
useValue: options,
},
],
你能展示一下你是如何发送ExtendeDeserService的吗?@Porcellus我编辑了这个问题,检查一下:)但我想使用EmailUserService,而不是UserService。如果我导入UserService,它将被使用,不是吗?谢谢!工作起来很有魅力:)小编辑-仍然需要提供
EmailUserService
,这样nest将加载其依赖项提供程序:[EmailUserService,{provide:'UserService',useClass:EmailUserService,//Extends UserService},{提供:'CONFIG_OPTIONS',useValue:OPTIONS,}]
providers: [
EmailUserService,
{
provide: UserService,
useClass: EmailUserService, // Extends UserService
},
{
provide: 'CONFIG_OPTIONS',
useValue: options,
},
],