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

Фабрика провайдера в Nest

Значение для страницы может зависеть от окружения или настроек приложения. Хранить эту логику в контроллере неудобно: её лучше выполнить один раз при старте модуля.

Приём useFactory задаёт функцию, которая возвращает готовое значение. В массиве inject перечисляют зависимости фабрики - часто ConfigService из модуля настроек. Корневой модуль подключает ConfigModule.forRoot в том же @Module.

Покажем на примере постов. Подключим настройки и опишем фабрику, которая читает строку из конфигурации:

import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { PostController } from './post.controller.js'; @Module({ imports: [ConfigModule.forRoot()], controllers: [PostController], providers: [ { provide: 'POSTS', inject: [ConfigService], useFactory: (configService: ConfigService) => { return ( configService.get<string>('POSTS_LABEL') ?? 'Posts from config' ); }, }, ], }) export class AppModule {}

Контроллер получит строку по токену и вернёт её клиенту:

import { Controller, Get, Inject } from '@nestjs/common'; @Controller('posts') export class PostController { label: string; constructor(@Inject('POSTS') label: string) { this.label = label; } @Get() getPosts(): string { return this.label; } }

Соберите подпись списка работников фабрикой с ConfigService и отдайте её из WorkerController.

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