Конфликт данных в Nest
Клиент создаёт запись с номером, который уже занят в памяти сервера. Второй объект с тем же ключом испортит список, если метод молча добавит дубликат.
ConflictException отвечает кодом
«конфликт». Перед добавлением метод
ищет совпадение по номеру и бросает
исключение, когда место уже занято.
Покажем на примере постов:
import {
Body,
ConflictException,
Controller,
Post,
} from '@nestjs/common';
@Controller('posts')
export class PostController {
private posts = [{ id: '1', title: 'Morning note' }];
@Post()
createPost(@Body() body: { id: string; title: string }) {
const exists = this.posts.some((item) => item.id === body.id);
if (exists) {
throw new ConflictException('Post already exists');
}
const item = { id: body.id, title: body.title };
this.posts.push(item);
return item;
}
}
Контроллер регистрируем в корневом модуле:
import { Module } from '@nestjs/common';
import { PostController } from './post.controller.js';
@Module({
controllers: [PostController],
})
export class AppModule {}
Примите работника с заданным номером
в контроллере WorkerController.
Если такой номер уже в списке,
прервите метод отказом «конфликт».
Подключите контроллер к корневому
модулю.