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

Модуль с настройкой в Nest

Пусть модуль темы должен знать, из какой папки читать файлы, а строка меняется от окружения к окружению. Записать её прямо в декоратор модуля - значит править код при каждом переносе.

На классе модуля описывают статический метод, который возвращает объект с полем module и нужными списками. Параметры метода попадают в useValue провайдера со строковым токеном. Контроллер запрашивает токен через @Inject и отдаёт значение клиенту.

Покажем на примере постов. Опишем модуль с методом настройки:

import { DynamicModule, Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; @Module({}) export class PostsModule { static register(options: { folder: string }): DynamicModule { return { module: PostsModule, controllers: [PostController], providers: [ { provide: 'FOLDER', useValue: options.folder, }, ], exports: ['FOLDER'], }; } }

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

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

Корневой модуль подключит результат настройки в списке imports:

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

Передайте имя каталога данных в модуль WorkersModule при подключении и верните его из WorkerController по строковому токену.

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