Error Handling (TypeORM)

Jiwon Youn·2021년 1월 6일
0

error를 return 할 수 있는 새로운 DTO class 생성

/common/dto/output.dto.ts

import { Entity } from 'typeorm';

@Entity()
export class CoreOutput {
  ok: boolean;
  error?: string;
}

상속 받을 DTO 객체 class

/products/output.dto.ts

import { CoreOutput } from 'src/common/dto/output.dto';
import { Entity } from 'typeorm';
import { Product } from '../entities/products.entity';

@Entity()
export class ProductOutput extends CoreOutput {
  data?: Product[];
  // getAll 객체 배열
}

@Entity()
export class ProductOutputOne extends CoreOutput {
  data?: Product;
  // getOne 단일 객체
}

/products.service.ts

async getAll(): Promise<ProductOutput> {
    try {
      // throw new error();
      return {
        ok: true,
        data: await this.products.find(),
      };
    } catch (e) {
      return {
        ok: false,
        error: e,
      };
    }
  }
  
  async getOne(id: number): Promise<ProductOutputOne> {
    try {
      // throw new error();
      return {
        ok: true,
        data: await this.products.findOne(id),
      };
    } catch (e) {
      return {
        ok: false,
        error: e,
      };
    }
  }
  • getAll, getOne 각각의 반환 타입으로 return
  • create, update, delete는 반환 타입이 void

BadRequestException

async getOne(id: number): Promise<ProductOutputOne> {
    try {
      throw new BadRequestException();
      return {
        ok: true,
        data: await this.products.findOne(id),
      };
    } catch (e) {
      return {
        ok: false,
        error: e,
      };
    }
  }

위와 같이 BadRequestException을 던졌을 시

{
  "ok": false,
  "error": {
    "response": {
      "statusCode": 400,
      "message": "Bad Request"
    },
    "status": 400,
    "message": "Bad Request"
  }
}

Error statusCode, message return

0개의 댓글