본문 바로가기

캡스톤 설계 [건물별 소통 플랫폼 BBC]/개발 진행

게시글 작성에 트랜잭션 걸기 쿼리러너로 트랜잭션 기능 추가 트랜잭션은 똑같은 쿼리러너를 사용해야 작용이 되므로 getRepositry를 사용해서 가져와서 사용 이미지 관련 서비스 따로 생성 트랜잭션을 건뒤 성공적인 응답에 대해 잘 저장되는것을 확인 의도적으로 게시물 생성과 이미지 저장에 대한 로직 사이에 에러 던지기 에러가 난뒤 다시 게시물 데이터베이스를 조회 해보아도 새로 생성되지 않았따. 더보기
여러 image 업로드하기 이미지 테이블 따로 생성 post 엔티티와의 관계도 설정 완료 createPostDto 수정 => each: true 옵션 추가(리스트) 게시글 생성 후 업로드 이미지들을 루핑하여 처리 이미지 생성 dto 생성 그럼 이제 이미지들을 잘 가져올 수 있다. 이미지도 잘 나온다/ 더보기
S3기능 코드로 구현하기 파일 선 업로드 이전에 구현한 방식은 글과 제목 채팅방제목 등등과 이미지를 한번에 백엔드로 보내는 방식이었다. 하지만 이미지의 경우다른 텍스트에 비해 수십배는 전송속도에 차이가 나기에 이미지를 업로드 하자 마자 바로 백엔드에 temp(임시폴더)에저장을 시키고 이후 로직을 자동하게 한다. . . 그리고 마지막 로직에서 임시폴더에서 원래 저장되어야할 폴더로 이동을 시킨다. . . . 이제 이미지 업로드 로직은 common 모듈에서 개발을 할것이다, 이전과 같은 multer모듈 옵션을 common 모듈에 import시킨다. 파일 이름만 반환하는 컨트롤러 생성 temp 디렉토리에 잘 저장된다. dto에 postImage속성을 추가해서 바로 temp로 넘긴다. 이미지 업로드를 하면 temp에 있는 파일을 바로 post폴더로 옮겨.. 더보기
이미지 업로드multer 사용 리팩토링 새롭게 이미지 업로드 관련 코드를 리팩토링 해보려한다. . . 차후 인터셉터와 트랜잭션을 사용하여 더 좋은 코드로 짜기 위해서 이다. 우선 차근차근 다시 기초 코드들을 쌓아 올리며 진행해보자. . . npm i multer @types/multer uuid @types/uuid 우선은 이렇게 코드를 작성 해서 서버에 프론트에서 업로드한 파일이 잘 오는지 체크해보았따. 포스트맨에도 잘 나오며 서버에도 잘 저장이 된다. Static File Serving npm i @nestjs/serve-static​ 모듈 설치 후 옵션 설정 이제 해당 url로 들어가면 현재 서버에 저장된 이미지를 확인할 수 있다. 더보기
dto에 들어온 값 이외의 값들은 막기 차후 추가 필터를 도입할경우 에러에 대비해 개발 세팅 whitelist 속성을 옵션에 추가하여 dto에 정의 되지 않은 속성이들어올경우 요청을 거부하게 한다. 그리고 forbidNonWHitelisted를 사용해서 메세지로 알려준다. 더보기
Paginate 일반화 하기 CursorPaginate 일반화 하기 BasePaginationDto 생성하기 _가 1개였던걸 __ 두개로 변경하여 split해서 개발 진행할 예정 일반화할 기본 틀 common service에 작성 cursorPaginate 완성 composeFindOptions완성 parseWhereFilter 완성 parseOrderFilter는 Where필터의 로직에 중복되어 한번더 일반화 가능 ! 잘나온다..! PagePaginate 일반화 하기 잘나온다 ..! 더보기
Page Pagination 완성 dto의 page 키가 있는지에 따라 분기 처리해서 페이지 기반인지 커서 기반인지 처리. 잘 나온다. 더보기
Cursor Pagination 메타 데이터 20개 단위로 페이지네이션이 되는걸 알수 있으며 아래 다음 url도 잘 나온다. 그리고 그 하단 next의 값을 누르면 아래와같이 자동으로 url이 생성되며 다음 20개의 페이지가 나온다. 가장 마지막 페이지를 보면 count는 15로 마지막값임을 알수 있다. 하지만 논리적으로 이상하게 next란 키값이 생성된다. 이것을 없애보자. lastItem을 생성하는 조건을 가져온 게시글의 갯수와 take의 갯수가 같아야만 다음 페이지를 생성하기 위해 필요한 lastItem을 생성하게 한다. 그럼이제 next url이 생성되지 않는것을 확인할 수 있따. cursor 키와 next의 키에 아무런 값이 없는게 이후에 착오를 줄 수 있으니 nullish병합 연산자를 사용해서 null을 띄우게 하였다. DESC도 추가 .. 더보기