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

Необязательный провайдер в Nest

Зависимость может быть не зарегистрирована: модуль собран без неё, а контроллер должен всё равно ответить клиенту предсказуемым текстом.

Пометка @Optional рядом с @Inject говорит Nest, что провайдер можно не находить. Тогда в параметр попадёт undefined. Метод страницы проверяет значение и отдаёт запасную фразу, если данных нет.

Покажем на примере постов. Модуль подключит только контроллер, без провайдера массива:

import { Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; @Module({ controllers: [PostController], providers: [], }) export class AppModule {}

Контроллер запросит массив как необязательный и вернёт запасной текст, если его нет:

import { Controller, Get, Inject, Optional, } from '@nestjs/common'; @Controller('posts') export class PostController { posts: string[] | undefined; constructor( @Optional() @Inject('POSTS') posts: string[] | undefined, ) { this.posts = posts; } @Get() getPosts(): string { if (this.posts === undefined) { return 'No posts configured'; } return this.posts.join(', '); } }

Сделайте список работников необязательной зависимостью в WorkerController и верните запасную фразу, если провайдера нет.

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