如何使用工厂在nestjs依赖注入系统中提供类?

问题描述 投票:0回答:1

我想创建抽象服务/类的多个实现。并根据某些“设置”使用特定的一个。我在官方文档中找到了这个例子。 enter image description here

现在我想使用这样的东西,但我发现这是一个非常简单的三元运算符,我不能在这里使用任何其他可注入的东西(带有 useClass 属性)。

当前的工作解决方案是通过以下方式使用“useFactory”属性: enter image description here

但是这样我就必须自己实例化这些对象。现在很容易(只需添加括号)。但是当这些实现中添加依赖项时,我需要自己管理它,我不期待这样的机会。

基于这些原因,我想问一下,解决这个问题最常见的方法是什么?也许可以,只在三元运算符中使用 process.env,或者可以自己管理依赖项,也许有类似“useClassFactory”属性的东西,我可以在其中使用函数,返回已定义的类与“Injectable”装饰器然后将其用作普通可注入?

javascript dependency-injection nestjs
1个回答
0
投票

在你的情况下,我认为

useClass
更好,并且可以在十进制运算符中使用 process.env 。
使用
useClass
,您仍然可以注入
UsersDbRepository
UsersInMemoryRepository
所需的依赖项,方法是将它们添加到
UsersModule
的提供程序或添加将这些依赖项导出到
UsersModule
的导入的模块

© www.soinside.com 2019 - 2024. All rights reserved.