TIL :: exception.filter / 기술면접 공부
nest에서는 에러를 캐치하는 상황이 없다면 express처럼 어쩔수없이 에러를 뱉고 서버가 다운이된다.
매번 작업을하면서 서버를 다시키고 하는 번거로움이 있기에 다른 방법이 있을까? 하다가 알게된 점을 적는다.
1 .우선 폴더를 생성하고 파일을 만들어줘야함
그리고 나서 아래의 코드들을 추가해 준다.
import { ArgumentsHost, Catch, ExceptionFilter, HttpException } from '@nestjs/common';
import { Response } from 'express';
@Catch(HttpException) // Catch 데코레이터
export class HttpExceptionFilter implements ExceptionFilter {
catch(exception: HttpException, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
const status = exception.getStatus(); // 예외코드
const message = exception.message; // 예외메세지
response.status(status).json({ message });
console.log('======================');
console.log('예외가 발생했습니다.');
console.log('예외내용', message);
console.log('예외코드', status);
console.log('======================');
}
}
이렇게만 하면 끝..? 이 아니다!
2.각자만의 메인으로가면 ~~~listen(3000) 이라던가 포트가 있는쪽 윗줄로 가서
app.useGlobalFilters(new HttpExceptionFilter());
이렇게 추가해주면 끝이다!!
그리고 처음이신분들은 실수할수 있는데, 안에 HttpExceptionFilter 는 자동완성으로 tap키를 누르고 선언을 해줘야한다.
그 이유는 폴더안에 파일안에 있는 클래스이기때문에 따로 선언을 해줘야한다.
3. + 추가
console.log('======================');
console.log('예외가 발생했습니다.');
console.log('예외내용', message);
console.log('예외코드', status);
console.log('======================');
이쪽에 있는 코드들은 지워주고 따로 설정을 해줘도 괜찮다. 그 이유는, 실제 서버가 배포되기전까지 에러가 어느 위치에서 나오는건지? 왜 나오는건지? 체크하기위해서 console을 찍는것이기 때문이다.
그래서 실제로 배포를 할땐 console쪽을 주석처리하고 서버다운만 방지하는 용도로 쓰인다!
# 기술면접 준비
< RDBMS의 정규화 >
우선 RDBMS는 관계형데이터 베이스라는 뜻이다. 이중에서도 여러가지의 테이블들이 있는데 그 관계들중에서는 부모테이블, 자식테이블들이 있을것이다. 그래서 PK(키),FK(외래키) 설정을 잘해야한다. 정규화중에서도 여러가지 정규화방식들이 많은데 이것을 다 이야기하기엔 너무 길어져서 블로그 출처를 남기며 보는것을 추천한다.
https://mangkyu.tistory.com/110
[Database] 정규화(Normalization) 쉽게 이해하기
지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz
mangkyu.tistory.com
개인 생각 : 쉽게 말해 정규화라는 것은 하나의 테이블들을 두개의 테이블로 분리를 시켜 상관관계가 있도록 하는것이다.