如何将 NestJS 中的服务注入到 typeorm 存储库中?

2024-02-07

我有一个UserRepository它处理在数据库前面创建/验证用户。我想对用户的密码执行哈希和验证,因此我为此创建了一个单独的服务,尝试遵循单一责任原则,其声明如下:

@Injectable()
export default class HashService

我将其导入到我的模块中:

@Module({
    imports: [TypeOrmModule.forFeature([UserRepository])],
    controllers: [AuthController],
    providers: [AuthService, HashService],
})
export class AuthModule {}

我想将它注入UserRepository,我尝试将其作为构造函数参数传递,但它不起作用,因为它的基类已经接受了 2 个参数,所以我尝试在它们之后注入我的服务,如下所示:

@EntityRepository(User)
export default class UserRepository extends Repository<User> {
    constructor(
        entityManager: EntityManager,
        entityMetadata: EntityMetadata,
        @Inject() private readonly hashService: HashService,
    ) {
        super();
    }

    // Logic...
}

But hashService未定义,我也尝试过不使用@Inject()装饰师。 最好的注射方式是什么HashService进入我的存储库?我必须创建它的新实例吗?


简短的回答:你不知道。

TypeORM 的自定义存储库、存储库类和实体在技术上位于 Nest 的 DI 系统之外,因此不可能向其中注入任何值。如果你真的想去做,你可以弄清楚什么是Repository类需要它的构造函数参数,并将它们添加到工厂中以实例化存储库类并直接使用它,而不是通过TypeOrmModule.forFeature,但这是相当多的额外工作。

在我看来,自定义存储库模式在 Nest 中没有太大帮助,因为服务本质上保留了以下逻辑:CustomRepository会。存储库类是通往数据库的门户,但不需要向其中添加任何额外的逻辑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 NestJS 中的服务注入到 typeorm 存储库中? 的相关文章

随机推荐

  • 在图像上添加动态文本

    我正在为用户创建一个网站 他们可以在其中创建自定义徽标 为此 我需要一种工具来从用户将填写的文本框中添加动态文本 然后文本应出现在所选图像上 有没有什么办法 比如说Javascript 可以通过它来实现上述场景 对于我如何做到这一点的任何建
  • RecyclerView Grid - 定义每行的项目数

    我通常反对在没有代码的情况下发布问题 但我没有代码可以显示 我终于将我的项目从 listviews 和 gridviews 转换为 recyclerView 在一堂课中 我使用一个小型网格视图来放置从服务器拉取的项目 每行的最大项目数为 3
  • 尝试在 Rails 中调用我的服务时出现“未初始化常量”

    我正在使用 Rails 4 2 3 我在控制器中有这一行 service XACTEService new Event 2015 06 01 Zoo 有问题的类在 app services XACTEService rb 中定义 然而 在访
  • XmlSerializer 列表项元素名称

    我有课PersonList XmlRoot Persons PersonList List
  • Web 应用程序的传入请求是否有配额?

    我正在运行一个脚本 该脚本通过 URL 访问更改 Google 表格中的行 部署为 Web 应用程序 例如macroUrl sheet SheetName key KeyName value ValueName 这非常适合我的需要 但我不确
  • 与 TypeScript 混合模式?

    我读过这篇文章 https justinfagnani com 2015 12 21 real mixins with javascript classes https justinfagnani com 2015 12 21 real m
  • 增加 HTML 正文中的光标大小

    有没有什么方法可以在基于浏览器的应用程序中以编程方式增加光标的大小CSS or jQuery 我可以用 CSS 改变光标的类型 就像这样 body cursor crosshair 但我在 CSS 中没有看到增加光标大小的规定 没有关于光标
  • 你能让 ERB 在渲染时正确缩进吗?

    我有几个部分包含在 Rails 中application html erb file 但生成的 HTML 不会保留我的缩进 格式 我被告知第一行以与调用相同的缩进级别呈现 partial html erb 但部分中的所有后续行都会左对齐 这
  • jQuery 图片库非功能性淡入淡出效果

    这是一个简单的图像库脚本 用于淡入和淡出带有背景图像的 div 它很慢而且不能正常工作 看起来所有图像都一起出现和消失 没有任何动画 该画廊应该将每张图像淡出到下一张图像中 function gallery timerp window se
  • Imagemagick 将每个边缘切掉 30px(宽度和高度可变)

    我需要将每边切掉 30px 左上右下 我试过了crop并且 chop 30x30但这似乎只在一方面起作用 convert verbose density 150 trim pdfs test test pdf quality 80 chop
  • 源集 - Groovy -> Kotlin DSL

    sourceSets main java srcDirs src main kotlin src main java res srcDirs src main res layouts activity src main res layout
  • 使用管理器和向量时出现内存错误

    我想创建一个包含多个对象的管理器 并且必须使用它才能实际创建对象 这些对象将其信息保存在智能指针中 这就是我的实现方式 struct Object std shared ptr
  • 使用按钮事件 tkinter 在画布中创建图像

    我需要向 Tkinter gui 中的按钮添加一个事件 该事件将在画布中创建图像 我该怎么做 谢谢大家 它有效 但我需要获取同一图像文件的动态数字图像 但每次我创建新图像时 旧图像都会被垃圾收集 我想不出该怎么办 我想在画布上有同一图像的多
  • Java:Eclipse 和 javac 中的泛型处理方式不同

    说我们有课 public class Entry
  • 如何在 php / Laravel 5 中解析 SimpleXMLElement?

    我使用 Guzzle 向后端的外部 API 发出 XML 请求 这是我创建 Guzzle 客户端的地方 client new Client GuzzleHttp Client 这是我提出请求的地方 request client gt req
  • 无法将ubi附加到mtd分区

    我们在基于 DM365 的定制板中使用 MT29F8G08ABABA 我们使用的是 NAND 启动 RootFS采用UBIFS格式 Below is basic achitecture of the NAND 我正在使用以下命令来创建 ub
  • 排队操作(不是效果)在一段时间后执行。

    我想知道是否有一种好的方法可以将 jQuery 函数排队以在设定的时间后执行 这不会暂停其他函数的执行 只会暂停链中后续函数的执行 也许我设想的一个例子可以说明 alert show wait 5000 lt this bit hide 我
  • 逐字符绘制文本时的字距调整问题

    我正在尝试逐个字符地绘制字符串 以便为由文本组成的形状添加灯光效果 while i line length c line substring i i 1 cWidth g getFontMetrics stringWidth c g dra
  • 数据读取器如何工作?

    我在想如果没有连接到 SQLServer SQLDataReader 不应该工作 我实验了这个场景 我执行 ExecuteReader 然后停止 SQLServer 服务并尝试迭代 DataReader 我期待的是一个例外 但它却给出了一个
  • 如何将 NestJS 中的服务注入到 typeorm 存储库中?

    我有一个UserRepository它处理在数据库前面创建 验证用户 我想对用户的密码执行哈希和验证 因此我为此创建了一个单独的服务 尝试遵循单一责任原则 其声明如下 Injectable export default class Hash