据我了解,现在 nestjs 在应用程序启动时创建所有服务,也许我用错了有没有办法配置 NestJs 以根据请求创建服务?就像每次完成请求时都会重新创建在该请求上使用的一些服务?
最佳答案
随着 nest.js 6.0 的发布,injection scopes添加。有了这个,您可以为您的提供商选择以下三个范围之一:
- SINGLETON:默认行为。您的提供商的一个实例用于整个应用程序
- TRANSIENT:为注入(inject)它的每个提供者创建一个提供者的专用实例。
- REQUEST:对于每个请求,都会创建一个新的提供者。
⚠️ 注意:注入(inject)作用域会在你的依赖链中冒泡。 ⚠️
示例:如果 UsersController
(单例范围)注入(inject) UsersService
(单例范围)注入(inject) OtherService
(请求范围),则两者 UsersController
和 UsersService
将自动成为请求范围的。
用法
要么将它添加到 @Injectable()
装饰器中:
@Injectable({ scope: Scope.REQUEST })
export class UsersService {}
或者在您的模块定义中为自定义提供者设置它:
{
provide: 'CACHE_MANAGER',
useClass: CacheManager,
scope: Scope.TRANSIENT,
}
关于javascript - 请求范围的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53450075/