Удаление элемента в 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',
},
];
removePost(id: string) {
this.posts = this.posts.filter((post) => post.id !== id);
return this.posts;
}
}
Адрес с номером вызовет удаление и вернёт оставшийся список:
import { Controller, Delete, Param } from '@nestjs/common';
import { PostService } from './post.service.js';
@Controller()
export class PostController {
constructor(private postService: PostService) {}
@Delete('posts/:id')
removePost(@Param('id') id: string) {
return this.postService.removePost(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 {}
Уберите работника по номеру из адреса
из списка сервиса WorkerService
в контроллере WorkerController
и подключите оба класса к корневому
модулю.