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

Закрытый провайдер в Nest

Пусть сервису списка нужен вспомогательный класс. Название готовит он, и эта деталь принадлежит только своей теме.

Провайдер по умолчанию закрыт. Его получают классы того же модуля: контроллер и сервисы из списка providers. В exports его не ставят. Модуль, который импортирует этот, закрытый класс не увидит и внедрить его не сможет.

Покажем на примере постов. Вспомогательный сервис хранит название:

import { Injectable } from '@nestjs/common'; @Injectable() export class TextService { getTitle(): string { return 'Morning note'; } }

Сервис списка берёт название у вспомогательного сервиса:

import { Injectable } from '@nestjs/common'; import { TextService } from './text.service.js'; @Injectable() export class PostService { constructor(private textService: TextService) {} getPosts(): string { return this.textService.getTitle(); } }

Контроллер отдаёт результат сервиса списка:

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

Оба сервиса остаются в модуле постов. Вспомогательный класс в экспорт не входит:

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

Корневой модуль подключает модуль постов:

import { Module } from '@nestjs/common'; import { PostsModule } from './posts/posts.module.js'; @Module({ imports: [PostsModule], }) export class AppModule {}

В модуле WorkersModule сделайте вспомогательный сервис для WorkerService и оставьте его закрытым внутри модуля. Модуль работников подключите к корневому.

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