我是 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 个模块,但从长远来看,它可能会很混乱。我想。
这样可以吗还是我遗漏了什么?
感谢您的帮助
查看 Nest JS 文档:全局模块
如果您必须在各处导入同一组模块,这可能会变得乏味。与 Nest 不同,Angularproviders 是在全局范围内注册的。一旦定义,它们就随处可用。然而,Nest 将提供程序封装在模块范围内。如果不先导入封装模块,您就无法在其他地方使用模块的提供程序。
当您想要提供一组开箱即用的提供程序(例如帮助程序、数据库连接等)时,请使用 @Global() 装饰器使模块全局化。
所以,如果你不想多次注入相同的依赖项,全局模块可以帮助你