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

Токен провайдера в Nest

Строковый токен прост, но легко ошибиться в написании и сложнее держать тип значения рядом с регистрацией провайдера.

InjectionToken - объект-токен с типом значения. Его создают один раз, передают в provide и в @Inject. Так зависимость видна и в модуле, и в контроллере без «магических» строк.

Покажем на примере постов. Объявим токен и массив в модуле:

import { InjectionToken } from '@nestjs/common'; export const POSTS = new InjectionToken<string[]>('POSTS');

Подключим провайдер с этим токеном и контроллер:

import { Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; import { POSTS } from './posts.token.js'; @Module({ controllers: [PostController], providers: [ { provide: POSTS, useValue: ['First post', 'Second post'], }, ], }) export class AppModule {}

Внедрим массив по объекту-токену и отдадим его клиенту:

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

Оформите токен для списка работников, зарегистрируйте массив в WorkerModule и внедрите его в WorkerController.

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