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

Поиск элемента в сервисе в Nest

Бывает, что записи лежат списком, а открыть одну по номеру из адреса нельзя. Метод знает только весь массив, хотя клиент просит одну карточку.

Поиск по полю номера делают в сервисе. Контроллер читает параметр из пути и передаёт его в операцию поиска, а в ответ идёт найденный объект.

Покажем на примере постов. Зададим две записи с номерами и метод поиска:

import { Injectable } from '@nestjs/common'; @Injectable() export class PostService { private posts = [ { id: '1', title: 'Morning note', text: 'A short text', }, { id: '2', title: 'Evening note', text: 'Another text', }, ]; findPost(id: string) { return this.posts.find((post) => post.id === id); } }

Адрес с параметром номера вызовет поиск и вернёт объект поста:

import { Controller, Get, Param } from '@nestjs/common'; import { PostService } from './post.service.js'; @Controller() export class PostController { constructor(private postService: PostService) {} @Get('posts/:id') getPost(@Param('id') id: string) { return this.postService.findPost(id); } }

Укажем оба класса в корневом модуле:

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

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

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