Настройка в сервисе в Nest
Пусть заголовок сайта читает только контроллер. Логика страницы смешана с доступом к настройкам, хотя то же значение может понадобиться сервису.
ConfigService внедряют в сервис
так же, как в контроллер. Метод
списка берёт строку из настроек
и возвращает её, а контроллер
лишь вызывает операцию сервиса
и отдаёт результат клиенту.
Импорт модуля конфигурации и списки
контроллера с провайдерами остаются
в одном корневом модуле.
Покажем на примере постов:
BLOG_TITLE=Blog
Сервис списка прочитает заголовок через сервис настроек:
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class PostService {
constructor(private configService: ConfigService) {}
getPosts(): string {
return this.configService.get('BLOG_TITLE');
}
}
Контроллер запросит строку у сервиса:
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 { ConfigModule } from '@nestjs/config';
import { PostController } from './post.controller.js';
import { PostService } from './post.service.js';
@Module({
imports: [ConfigModule.forRoot()],
controllers: [PostController],
providers: [PostService],
})
export class AppModule {}
Сделайте страницу списка работников
в контроллере WorkerController,
которая берёт название сайта
из сервиса WorkerService
с чтением настроек, и подключите
оба класса с модулем конфигурации
к корневому модулю.