РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpScSS 12 of 201 menu
◀ ▶

Область видимости сервиса в Nest

Если область не указана, Nest и так держит один экземпляр сервиса на всё приложение. Явная запись нужна, когда важно показать намерение в коде или рядом стоят сервисы с другими правилами.

Стандартная область через Scope.DEFAULT ведёт себя как синглтон: повторные обращения к API увеличивают одни и те же поля. Это удобно для кэша и справочников без привязки к запросу.

Покажем на примере постов. Сервис накопит общий счётчик:

import { Injectable, Scope } from '@nestjs/common'; @Injectable({ scope: Scope.DEFAULT }) export class PostService { hits = 0; touch(): string { this.hits += 1; return String(this.hits); } }

Контроллер с префиксом адреса вернёт текущее значение счётчика:

import { Controller, Get } from '@nestjs/common'; import { PostService } from './post.service.js'; @Controller('posts') export class PostController { postService: PostService; constructor(postService: PostService) { this.postService = postService; } @Get() getPosts(): string { return this.postService.touch(); } }

Оба типа регистрируем в корневом модуле:

import { Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; import { PostService } from './post.service.js'; @Module({ controllers: [PostController], providers: [PostService], }) export class AppModule {}

Сделайте WorkerService со стандартной областью и верните нарастающий счётчик из WorkerController, подключив оба типа к корневому модулю.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить