클라이언트 측의 요청에 부적절한 부분이 있다면 적절한 에러 문구를 보내주어야 한다.
그 중에서 요청하는 데이터를 찾을 수 없을 때, NotFoundException을 사용할 수 있다.
이 외에도 nest에서 제공하는 BadRequestException 등 몇가지가 있다.
users.service.ts
import { Injectable, NotFoundException } from '@nestjs/common';
import {Repository} from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './user.entity';
@Injectable()
export class UsersService {
constructor(@InjectRepository(User) private repo: Repository<User>) {}
async update(id: number, attrs: Partial<User>) {
const user = await this.findOne(id);
if(!user) {
throw new NotFoundException('user not found');
}
Object.assign(user, attrs);
return this.repo.save(user);
}
async remove(id: number) {
const user = await this.findOne(id);
if(!user) {
throw new NotFoundException('user not found');
}
return this.repo.remove(user);
}
}
service뿐만 아니라, controller에서도 Exception Handling이 가능하다.
users.controller.ts
@Controller('auth')
export class UsersController {
constructor(private usersService:UsersService){}
@Get('/:id')
async findUser(@Param('id') id: string) {
const user = await this.usersService.findOne(parseInt(id));
if(!user){
throw new NotFoundException('user not found.');
}
return user;
}
}