Экспорт провайдера в 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
для других модулей и подключите
этот модуль к корневому.