forRoot 和 forFeature 的区别 [Nest JS]

Pla*_*tus 17 javascript typescript typeorm nestjs

我想了解nest js动态模块中forRoot和forFeature之间的区别。

我还想了解 TypeOrm 动态模块与 Nestjs 一起使用的情况下的差异。

Jay*_*iel 14

一般来说,由于这并不总是成立,forRoot/register是提供模块将要使用的配置的一种方式,而用于forFeature创建具有自己的注入令牌的动态提供程序。

在您提到的情况下TypeOrmModuleforRoot()设置 Nest 使用的连接信息,Nest 为connection创建的连接创建注入令牌。对于forFeature,Nest 在底层获取该连接注入令牌,并为传递给 n 的存储库创建注入令牌和自定义提供程序。令牌通常看起来像<EntityName>Repository,并使用底层工厂来注入连接并从 TypeORM 系统中获取存储库,以便将其注入到您的常规服务中。


use*_*082 9

来自 Nest.js Discord,

  • forRoot/ :配置一次forRootAsync模块。这要么用于全局服务,要么用于内部重用配置
  • forFeature/ :对特定提供程序forFeatureAsync使用 forRoot/forRootAsync 中的配置。这通常会创建一个注入令牌。
  • register/ :可以多次registerAsync注册的模块,每次使用不同的配置。