С выпуском nest.js 6.0 были добавлены области инъекций .При этом вы можете выбрать одну из следующих трех областей для своих провайдеров:
- SINGLETON : поведение по умолчанию.Один экземпляр вашего провайдера используется для всего приложения
- TRANSIENT : выделенный экземпляр вашего провайдера создается для каждого провайдера, который его внедряет.
- ЗАПРОС: для каждого запроса создается новый поставщик.Внимание: это поведение будет всплывать в вашей цепочке зависимостей.Пример: если UsersController (Singleton) внедряет UsersService (Singleton), который внедряет OtherService (Запрос), то и UsersController, и UsersService автоматически становятся областью запроса.
Использование
Либо добавьте егодля @Injectable()
декоратора:
@Injectable({ scope: Scope.REQUEST })
export class UsersService {}
Или установите его для пользовательских провайдеров в определении вашего модуля:
{
provide: 'CACHE_MANAGER',
useClass: CacheManager,
scope: Scope.TRANSIENT,
}