본문 바로가기

캡스톤 설계 [건물별 소통 플랫폼 BBC]

소켓 채팅 기본기[Gateway 생성하고 메세지 리스닝] npm i @nestjs/websockets @nestjs/platform-socket.io socket.io 또한 restAPI 경우에는 패키지간의 의존성이 잘 맺어지는 반면 Socket.io는 잘 맞지 않을 수 있어 관련 패키지를 다시 설치 npm i @nestjs/common @nestjs/core @nestjs/jwt @nestjs/platform-express @nestjs/platform-socket.io @nestjs/typeorm @nestjs/websockets websocket을 선택하면 더 쉽지만 공부하는 차원에서 REST API로 선택한 뒤 하나씩 직접 구현해 보자. . . 소켓io 서버 생성 및 연결 테스트 완 메세지 보내기 테스트완료. 더보기
인터셉터로 트랜잭션 걸기 인셉터를 사용해서 트랜잭션을 거는 부분은 요청에서 트랜잭션을 끝내는 부분은 응답에서 처리 ! . . . . 트랜잭션 인터셉터 생성 쿼리 러너 데코레이터 생성 음.. 우선 포스팅이 날아갔지만..테스트 완료 한걸 눈으로 보고 git push 까지 했으니..패쓰.. 더보기
게시글 작성에 트랜잭션 걸기 쿼리러너로 트랜잭션 기능 추가 트랜잭션은 똑같은 쿼리러너를 사용해야 작용이 되므로 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 일반화 하기 잘나온다 ..! 더보기