Dependency injection 这种依赖注入可以通过NestJS实现吗?

Dependency injection 这种依赖注入可以通过NestJS实现吗?,dependency-injection,decorator,nestjs,Dependency Injection,Decorator,Nestjs,我想以一种简单的方式将嵌套服务方法的结果作为依赖项注入。例如,一个日志记录工具,其中一个子日志记录程序是从主日志记录程序派生的,带有一个新的前缀 应该是这样的(长版本): @Injectable() 类MyService{ 私人记录器; 构造函数(专用loggerService:loggerService){ this.logger=loggerService.getChildLogger('prefix'); } someMethod(){ this.logger.info('Hello');

我想以一种简单的方式将嵌套服务方法的结果作为依赖项注入。例如,一个日志记录工具,其中一个子日志记录程序是从主日志记录程序派生的,带有一个新的前缀

应该是这样的(长版本):

@Injectable()
类MyService{
私人记录器;
构造函数(专用loggerService:loggerService){
this.logger=loggerService.getChildLogger('prefix');
}
someMethod(){
this.logger.info('Hello');
}  
}
但在简短的版本中,类似这样的东西-可能有一个装饰师:

@Injectable()
类MyService{
构造函数(@logger('prefix')logger:LoggerService){
}
someMethod(){
this.logger.info('Hello');
}  
}

您可以使用
日志服务为日志记录者创建提供者

日志服务

@Injectable()
导出类日志服务{
getChildLogger(作用域:字符串){
返回新的记录器(范围);
}
}
MyService

@Injectable()
导出类MyService在moduleinit上实现{
构造函数(@Inject('MY_SERVICE_LOGGER_TOKEN')public childLogger{}
onModuleInit(){
this.childLogger.log('helloworld');
}
}
模块:

@模块({
供应商:[
伐木服务,
我的服务,
{
提供:“我的\u服务\u日志记录\u令牌”,
useFactory:(loggerService)=>loggerService.getChildLogger('scope'),
注入:[日志服务]
},
]
})
导出类MyModule{}

您可以使用
日志服务为日志记录者创建提供者

日志服务

@Injectable()
导出类日志服务{
getChildLogger(作用域:字符串){
返回新的记录器(范围);
}
}
MyService

@Injectable()
导出类MyService在moduleinit上实现{
构造函数(@Inject('MY_SERVICE_LOGGER_TOKEN')public childLogger{}
onModuleInit(){
this.childLogger.log('helloworld');
}
}
模块:

@模块({
供应商:[
伐木服务,
我的服务,
{
提供:“我的\u服务\u日志记录\u令牌”,
useFactory:(loggerService)=>loggerService.getChildLogger('scope'),
注入:[日志服务]
},
]
})
导出类MyModule{}

现在,Livio Brunner提供了一个解决方案:
现在,Livio Brunner提供了一种解决方案:

我只想将范围设置为每个服务/类别,而不是每个模块。但感谢您的解决方案。我只想将作用域设置为每个服务/类,而不是每个模块。但是谢谢你的解决方案。