스트리핑 속성

전 포스팅에 나왔던 ValidationPipe는 메서드 핸들러가 받지 않을 값을 필터링해줄 수 있다. 화이트 리스트라는 개념을 이용하여 허용 가능 값들을 만들고 이 리스트에 포함되지 않으면 바로 제거되는 개념이다.

예를 들면, login routeremailpassword값으로 화이트 리스트를 만들면 age는 ResultDTO에서 자동으로 제거되는 것이다.

사용 방법

whitelist값을 true로 설정하면된다.

app.useGlobalPipes(
  new ValidationPipe({
    whitelist: true,
  }),
);

캐싱

고성능 데이터 엑서스를 제공하는 임시 저장소 역할을 한다. 캐싱이 들어가면 앱의 성능이 향상시켜준다고한다. 간단하니 꼭 잘 사용해보자.
사용하는 파일은 위 포스트를 봤을 때 service.ts를 새로 만들어서 사용하는 것 같기도하지만 연습용이기 때문에 일반 파일에 만들어도 될 것 같다.

메모리내 캐시

Nest는 캐시 스토리지를 위한 통합 API를 제공하는데 이 때 내장형 데이터 저장소는 메모리 내장형 데이터 저장소입니다. 그래서 쉽게 전환할 수 있다고 합니다.
캐싱을 사용하려면 CacheModule에서 register()메서드를 import해주면됩니다
app.module.ts를 아래와 같이 수정해줍니다.

import { CacheModule, Module } from '@nestjs/common';
import { AppController } from './app.controller';

@Module({
  imports: [CacheModule.register()],
  controllers: [AppController],
})
export class AppModule {}

캐시 저장소와 상호작용하기

constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}

사용할 controller에 위 코드를 넣어줍시다.

get

이 때 캐시 인스턴스의 get메서드는 캐시에서 항목 검색 시 사용됩니다.
그리고 캐시에 해당 아이템이 없으면 undefined를 반환합니다.

const value = await this.cacheManager.get('key');

set

이렇게 key라는 값을 가져오는 get메서드가 있다면 값을 추가해주는 set메서드도 있습니다.
아래처럼 key를 value라는 값을 가지고 있게 지정해줄 수 있습니다.

await this.cacheManager.set('key', 'value');
ttl

set메서드와 연계되는 내용인데, 캐시의 기본 만료 시간은 5초지만 ttl값을 이용하여 만료시간을 수정할 수 있습니다.

await this.cacheManager.set('key', 'value', { ttl: 1000 });
await this.cacheManager.set('key', 'value', { ttl: null });

이 때 단위는 밀리초고 null값을 지정해준다면 캐시가 만료되지 않습니다.

del

캐시에서 값을 삭제하는 메서드로 지우고 싶은 캐시의 이름을 적으면 된다.

await this.cacheManager.del('key');

reset

캐시 전체 값을 삭제하는 메서드다.

await this.cacheManager.reset();
profile
백엔드 개발자 정인교입니다!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN