본문 바로가기

Backend/NestJS6

main.ts 파해치기 (useGlobalPipes 옵션 whitelist) 우선 whitelist 옵션이 무엇인지 알아보기 전에 whitelit 옵션이 없을때 어떤 일이 일어나는지 보자. 만약 사용자가 students 테이블에서 점수가 50 점 이상인 학색들 정보를 받아온다고 했을때, 사용자는 아래와 같이 서버에 요청할 것이다. URL :호스트/students?score=50Method: GET // controller.ts@Controller('students')export class StudentsController { @Get() getAllStudents( @Query() query: StudentsDto ){ return this.studentsService.getAllStudents(); }}// service.ts@Injectable.. 2024. 6. 28.
Transaction, 한 가지 이상의 CRUD 를 실행할 때 roll back 실무에서 접했던 상황을 바탕으로 설명해보자면, 데이터베이스 저장소(repository)- user_farm: 사용자의 농장정보를 담고 있다.- farm: 사용자들의 농장정보를 담고 있다.- farm_dong: 농장의 동(A농장-1동, A농장- 2동, A농장- 3동...) 정보들을 담고 있다. 사용자가 농장을 추가하면 아래와 같은 순서로 저장되는 흐름이다.1. this.userFarmRepo.save()2. this.farmRepo.save()3. this.farmDongRepo.save() // service.tsasync saveUserFarm(dto: UserFarmDto){ const model = this.userFarmRepo.create(dto); const userFarm = a.. 2024. 6. 27.
이미지 파일 업로드 심화 - 선업로드 파일을 업로드할때 파일의 크기에 따라 처리시간이 오래걸릴 수 있다. 요즘 시대가 어떤 시대인가? 8282 대한민국 사람이라면 불편할 수 있다. 그래서 고안된 방법이, 파일을 선업로드하는 것이다. 사용자가 업로드 버튼을 누르기 전 단계, 즉 사용자가 파일을 선택한 순간 업로드를 시키는 것이다. 물론 장단점은 있다. 사용자가 선택했지만 업로드하지 않았을때와 같은 경우... 리소스 낭비가 될 수 있다. [1] 선업로드: temp 폴더에 임시로 이미지 파일을 저장위 코드는 이전 게시글에 있는 코드를 그대로 가져왔다. 이 부분이 바로 선업로드로 사용될 부분. MulterModule 에 register 메서드의 인자중 storage 가 바로 사용자가 이미지를 최종 업로드하기 전 바로 선택한 단계이고, 이 단계에서 .. 2024. 6. 25.
이미지 파일 업로드 핵심@nestjs/common : UseInterceptor, UplodedFile@nestjs/platform-express : FileInterceptor, MulterModulemulteruuidpath : extname, joinclass-transformer : Transformfs : promises 핵심은 위에 밑줄 친 메서드와 모듈.포스트맨에서 테스트할때 body 부분을 form-data 형식으로 보내야 한다. 그리고 당연히 Text 가 아닌 File 로... 파일을 저장할때 유니크한 파일명으로 저장해야하는데, 보통 Date 객체를 포함시킨 래덤 문자열을 사용하는데여기서는 uuid() 메서드로 대체한다. 모듈 import { BadRequestException, Module } from '.. 2024. 6. 25.
NestJS에서 validation 관련 설정 방법 (class-validator & class-transformer) 1. Pipe- controller 에서 사용.- NestJS 에서 Pipe 는 먼저 transform 하고 validate 한다.  에러메시지는 "validation failed". @Controller('posts')export class PostsController { constructor(private readonly postsService: PostsService) {} @Get(':id') getPost( @Param('id', ParseIntPipe) id: number ){ return this.postService.getPost(); }} 2. class-validator- Entity 또는 DTO 에서 사용- IsNumber, IsString, IsE.. 2024. 6. 18.
[NestJs] 끄적끄적 ■ NestJS 설치하고 새로운 프로젝트 생성하면 이것저것 생김.eslintrc.js : 개발자의 코드 스타일 정의prettierrc : 코드 포맷 형식 정의 ■ npm run start:dev 실행. 실행순서main.ts 순서 상 제일 먼저 로드되는 스크립트. 여기에 NestFactory.create()에 의해 루트모듈 정의, 포트설정 ■ 진입 순서?module → controller → service ■ 모듈의 구성① module, ② entity, ③ service, ④ repository, ④ pipe  ■ 모듈 파일 생성 명령어base: nest g module boards / nest g controller boards / nest g service boards option: --no-spec.. 2023. 3. 29.