json 형태의 데이터만 사용을 하기에 문제가 없었는데, 파일다운로드, http-proxy-middleware르 사용하는 요건이 생기자마자 작업을 했는데 오류가 발생하였다.
-- main.ts
useGlobalMiddleware(new TransformInterceptor());
위와 같이 트렌스폼을 전역으로 사용할 경우에 리턴값이 존재할 경우와 하지 않을 경우를 생각해야한다.
controller 에서 리턴값이 존재하냐 마냐 따라서 다르게 되는데, 위와 같은 상황에 리턴값이 존재할 경우에는 controller 에서 res.send등이 오류가 발생하게 된다.
아래와 같이 값의 유무에 따라 처리 로직을 다르게하면 res.send, http-proxy-middleware 이 중간에 res를 처리하는 상황에서도 오류가 발생하지 않는다.
-- transaction.intercepter.ts
import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
export interface Response<T> {
data: T;
}
@Injectable()
export class TransformInterceptor<T> implements NestInterceptor<T, Response<T>> {
intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
return next.handle().pipe(map( (data)=> {
if (!data) {
return data;
}
// to do somthing
}));
}
}
'Dev > JavaScript' 카테고리의 다른 글
[Nestjs] 개발 시작 전 알아두어야 할 것? (0) | 2023.01.03 |
---|---|
requestAnimationFrame 가 호출이 안될때가 있다. (0) | 2017.01.17 |
closure (클로저)가 무엇인가. (0) | 2015.03.03 |
Memory leak patterns in JavaScript (0) | 2012.08.20 |
Google Chart Tools, 빠르고 다이나믹한 차트 생성 (0) | 2012.07.15 |
HTML5 API 강좌 #3 – 아이폰 Web App 만들기 (0) | 2012.04.23 |
HTML5 API 강좌 #2 – Web SQL Database 와 GeoLocation (0) | 2012.04.23 |
파일이름 관련 함수 (0) | 2012.03.27 |