在 NestJS 中注入依赖项的正确方法

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

我是 NestJS 的新手,也不熟悉 DI。我正在使用 NestJS 构建一个简单的 API。当每个模块只有 1 个数据库连接依赖项时,一切都很好。但是当我将一个服务注入另一个服务时。像这样

export class UserService {
  constructor(
    private prismaService: PrismaService,
    private cartService: CartService
  ) {}

像这样使用 CartService

export class CartService {
  constructor(
    private prismaService: PrismaService,
    productService: ProductService
  ) {}

现在我必须在 UserModule 中提供所有产品依赖项

@Module({
  providers: [UserService, PrismaService, JwtService, CartService, ...ProductDependencies],
  controllers: [UserController],
  exports: [UserService],
})

现在我只有 7-8 个模块,但从长远来看,它可能会很混乱。我想。

这样可以吗还是我遗漏了什么?

感谢您的帮助

dependency-injection nestjs
1个回答
0
投票

查看 Nest JS 文档:全局模块

如果您必须在各处导入同一组模块,这可能会变得乏味。与 Nest 不同,Angularproviders 是在全局范围内注册的。一旦定义,它们就随处可用。然而,Nest 将提供程序封装在模块范围内。如果不先导入封装模块,您就无法在其他地方使用模块的提供程序。

当您想要提供一组开箱即用的提供程序(例如帮助程序、数据库连接等)时,请使用 @Global() 装饰器使模块全局化。

所以,如果你不想多次注入相同的依赖项,全局模块可以帮助你

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