nestjs) 예외처리

김명성·2022년 11월 19일
0
post-custom-banner

클라이언트 측의 요청에 부적절한 부분이 있다면 적절한 에러 문구를 보내주어야 한다.
그 중에서 요청하는 데이터를 찾을 수 없을 때, 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;
  }
}
post-custom-banner

0개의 댓글