我的团队正在尝试确定一种动态DI的方法,这样就可以有一个批量插入点,而不需要拼写+导入每个模块。
@Module({
...
providers: [
WorkerService,
WorkerResolver,
Worker2Service,
Worker2Resolver........
]
})
想要实现
var allModules = ... // logic here to include all my resolvers, or all my services
@Module({
...
providers: [
...allModules
]
})
2条答案
按热度按时间v8wbuo2f1#
您可以使用glob包动态查找模块,然后使用NestJs动态模块特性动态加载它们。
假设您的所有辅助文件都存储在名为
workers
的目录中,扩展名为.worker.ts
:现在假设你有一个简单的worker类,路径为
src/anyModule/workers/simple-worker.ts
,你可以这样使用它:如果您希望忽略
@Inject('SimpleWorker')
并自动注入模块(如NestJs服务),则需要对WorkerCoreModule
进行以下更改:然而,为了使它工作,您需要确保您的worker类是用
@injectable()
修饰的。js4nwp542#
另一个答案是正确的,但不要使用
useValue
,而是尝试使用useClass
: