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

Экспорт провайдера в Nest

Пусть сервис списка нужен ещё одному модулю, а снаружи этого класса нет. Свой контроллер получает сервис из списка providers, но другой модуль в своих провайдерах его не находит.

Наружу класс отдают списком exports. Туда попадают провайдеры, которые можно внедрить в модуле, импортирующем этот. Снаружи виден только класс из exports. Запись в providers оставляет его у себя.

Покажем на примере постов. Сервис отдаёт список:

import { Injectable } from '@nestjs/common'; @Injectable() export class PostService { getPosts(): string { return 'All posts'; } }

Контроллер того же модуля берёт список из сервиса:

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'; @Module({ controllers: [PostController], providers: [PostService], exports: [PostService], }) export class PostsModule {}

Корневой модуль импортирует модуль постов:

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

Откройте сервис WorkerService из модуля WorkersModule для других модулей и подключите этот модуль к корневому.

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