Пространство имён настроек в Nest
Пусть в файле окружения много ключей с разными префиксами. Обращаться к каждому по длинному имени неудобно, а связанные строки лучше держать в одной группе.
Функция registerAs описывает
фабрику настроек с коротким именем
пространства. Поле load
у метода forRoot подключает
такие фабрики при старте. Метод
get тогда принимает путь
через точку: сначала имя группы,
затем поле внутри неё.
Покажем на примере постов:
BLOG_TITLE=Blog
Вынесем заголовок блога в отдельный файл настроек:
import { registerAs } from '@nestjs/config';
export default registerAs('blog', () => ({
title: process.env.BLOG_TITLE,
}));
Контроллер прочитает поле
из группы blog:
import { Controller, Get } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Controller('posts')
export class PostController {
constructor(private configService: ConfigService) {}
@Get()
getPosts(): string {
return this.configService.get('blog.title');
}
}
Подключим фабрику в корневом модуле
через поле load:
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import blogConfig from './blog.config.js';
import { PostController } from './post.controller.js';
@Module({
imports: [ConfigModule.forRoot({ load: [blogConfig] })],
controllers: [PostController],
})
export class AppModule {}
Соберите настройки работников
в отдельную группу и отдайте
название сайта со страницы
контроллера WorkerController.
Подключите группу и контроллер
к корневому модулю.