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

Несколько сервисов в Nest

Бывает, что две разные выборки готовят разные классы, а страница знает только один из них. Второй адрес вынужден дублировать правила или обходиться без своего класса.

Контроллер может принять несколько сервисов в конструкторе. Каждый маршрут вызывает свою операцию, а Nest подставляет оба объекта из списка провайдеров.

Покажем на примере постов и черновиков. Два сервиса с разными короткими ответами:

import { Injectable } from '@nestjs/common'; @Injectable() export class PostService { getPosts(): string { return 'All posts'; } }

Черновики отдаёт отдельный класс:

import { Injectable } from '@nestjs/common'; @Injectable() export class DraftService { getDrafts(): string { return 'Draft posts'; } }

Контроллер получит оба сервиса и откроет два адреса:

import { Controller, Get } from '@nestjs/common'; import { DraftService } from './draft.service.js'; import { PostService } from './post.service.js'; @Controller() export class PostController { constructor( private postService: PostService, private draftService: DraftService, ) {} @Get('posts') getPosts(): string { return this.postService.getPosts(); } @Get('drafts') getDrafts(): string { return this.draftService.getDrafts(); } }

Запишем оба сервиса и контроллер в корневом модуле:

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

В контроллере WorkerController отдайте список работников из сервиса WorkerService и архив из сервиса ArchiveService. Подключите контроллер и оба сервиса к корневому модулю.

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