본문 바로가기

Backend/NestJS7

Transaction 사용하면서 겪은 상황 (POST 실행 후 then GET) // Thunksexport const getDocument = createAsyncThunk('document/get', async (path) => { console.log('path: ', path) return await api .get(path) .then((res) => res.data) .catch((error) => { throw new Error('GET-ERROR. 콘솔로그를 확인해주세요.') })})export const postDocument = createAsyncThunk('document/update', async (payload, { rejectWithValue }) => { const { path, document } = payload .. 2025. 3. 25.
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.