Готовое значение провайдера в Nest
Не всё, что нужно странице, удобно держать в методах сервиса. Иногда список уже известен при сборке модуля: его можно записать в провайдер как готовое значение.
Приём useValue связывает
токен со значением, которое Nest
не создаёт, а отдаёт как есть.
Токен часто задают строкой в поле
provide. Контроллер
запрашивает его через @Inject,
потому что по строке тип в
конструкторе сам не выводится.
Покажем на примере постов. Запишем массив в провайдер модуля:
import { Module } from '@nestjs/common';
import { PostController } from './post.controller.js';
@Module({
controllers: [PostController],
providers: [
{
provide: 'POSTS',
useValue: ['First post', 'Second post'],
},
],
})
export class AppModule {}
В контроллере с префиксом адреса внедрим массив по строковому токену и вернём его содержимое клиенту:
import { Controller, Get, Inject } from '@nestjs/common';
@Controller('posts')
export class PostController {
posts: string[];
constructor(@Inject('POSTS') posts: string[]) {
this.posts = posts;
}
@Get()
getPosts(): string {
return this.posts.join(', ');
}
}
Подставьте готовый массив имён
работников по строковому токену
в модуль WorkerModule
и верните его из
WorkerController.