Добавление элемента в Nest
Пусть список записей уже хранится в классе, а новой в него не попасть. Клиент может читать массив, но создать запись на сервере нечем.
Операция добавления принимает поля новой записи, кладёт объект в массив и возвращает его. Контроллер читает тело запроса и передаёт данные в сервис.
Покажем на примере постов. Начнём с одной записи в памяти и метода добавления:
import { Injectable } from '@nestjs/common';
@Injectable()
export class PostService {
private posts = [
{
id: '1',
title: 'Morning note',
text: 'A short text',
},
];
addPost(post: { title: string; text: string }) {
const item = {
id: String(this.posts.length + 1),
title: post.title,
text: post.text,
};
this.posts.push(item);
return item;
}
}
Маршрут создания прочитает тело и вызовет добавление:
import { Body, Controller, Post } from '@nestjs/common';
import { PostService } from './post.service.js';
@Controller()
export class PostController {
constructor(private postService: PostService) {}
@Post('posts')
createPost(
@Body() body: { title: string; text: string },
) {
return this.postService.addPost(body);
}
}
Зарегистрируем сервис и контроллер в корневом модуле:
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.
Оба класса подключите к корневому модулю.