SMAIVNN
article thumbnail
[Next.JS / Nest.JS] S3와 이미지가 포함된 게시글 그리고 성능
Web 2024. 7. 27. 23:38

조만간 운영할 사이트를 하나 만들며 이미지와 글이 혼합하여 보이는 블로그 형식의 게시글을 구현하고 있었습니다.C(R)UD를 구현하며 느낀것, 어떻게 더 성능을 끌어 올릴까 등 다양한 방법과 후기를 남기고자 합니다. 우선 CRUD는 어떻게 보면 기본적인 플랫폼/서비스의 기본이 되는 작업이죠. 블로그도 sns도 모두 여기서부터 시작됩니다. 저는 이러한 CRUD에 있어서 가장 중요한 것은 데이터 정합성, 효율적인 데이터 처리라고 생각합니다. 문제이번 고민 또한 이러한 데이터 정합성 문제에서 부터 시작되었습니다.  제가 원하는 형식은 블로그처럼 글과 글 사이에 이미지가 첨부 가능한 게시글입니다. 이를 블로그형 게시글이라고 부르도록 하겠습니다.  블로그형 게시글은 크게 보면 다음과 같은 순서의 작업이 필요합니다...

article thumbnail
[API 디자인] Response 어떻게 return해야 할까?
Web 2024. 7. 12. 02:56

현재 혼자 진행중인 프로젝트는 Next.js + Nest.js 조합으로 진행중입니다. 프로젝트를 진행하며 백엔드 로그인 코드를 조금 수정하였는데, 기존에 잘 작동하던 프론트 부분 코드가 작동하지 않는 상황이 발생하였습니다. 분명 로직은 그대로이고 (오히려 단순화 되었고) 변한 부분이 크지 않은데 왜 갑자기 안되지 싶었는데, 원인은 아래 코드였습니다. 해당 코드의 const result = await res.json() 부분이 문제였습니다.그냥 return받은 response의 json객체를 사용하는 것인데 왜? 라고 생각하실 수 있는데, 문제는 백엔드 로직이 json객체를 더 이상 반환하지 않게 수정 되었다는 것입니다. 기존에는 다양한 정보와 토큰을 주었지만 로직이 변경되며 정보 객체를 반환하지 않도록 ..

article thumbnail
[Nest.JS] 에러 처리 더 잘하기
Web 2024. 4. 30. 21:28

최근 프로젝트를 진행하며 http status code와 에러처리에 대해서 나름대로의 규칙을 정하는게 좋겠다는 생각이 들었습니다.특히, try-catch문에 대해서는 왜 쓰는지보다는 그냥 무작정 쓰고 본다는 느낌으로 코드를 작성했는데 오늘 자세히 정리해보고자 합니다. try-catch 의 작동try-catch는 아래의 작동 알고리즘을 갖습니다.먼저, try {...} 안의 코드가 실행됩니다.에러가 없다면, try 안의 마지막 줄까지 실행되고, catch 블록은 건너뜁니다.에러가 있다면, try 안 코드의 실행이 중단되고, catch(err) 블록으로 제어 흐름이 넘어갑니다. 변수 err(아무 이름이나 사용 가능)는 무슨 일이 일어났는지에 대한 설명이 담긴 에러 객체를 포함합니다.만약 try {…} 블록 ..

article thumbnail
[Nest.JS] TypeORM의 soft-delete와 회원 탈퇴 정책
Web 2024. 4. 17. 23:31

프로젝트 시작 전, 기존 몽고DB로 생성되었던 boilerPlate 코드를 TypeORM과 RDB로 변경하는 작업을 진행하고 있습니다. 또한 추가적으로 기본적인 Auth 관련 코드를 작성중입니다. 오늘은 서비스에서 회원 탈퇴시 고려할만한 사항들과 구현에 대해서 알아보고자 합니다. 회원 탈퇴 정책회원 탈퇴는 우선 '개인정보 보호법'을 준수하는게 우선입니다. 하지만 이 글에서는 개인정보 보호법과 관련 내용은 다루지 않고 서비스 운영에서 회원의 탈퇴시 고려할 상황에 관해 알아보겠습니다.자원 보유 검토사용자가 서비스에서 갖고있는 포인트 / 주문 내역 등 여러가지 자원에 대해서 인지하고 있는지, 이에 대한 삭제를 인지하고 있는지 등을 검토해야합니다.  서비스 측에서도 이러한 자원이 필수..

article thumbnail
프로젝트 시작은 항상 쉽지 않음
Project 2024. 4. 12. 01:59

9월 서비스를 목표로 하는 프로젝트를 시작하게 되었습니다. 새로운 서비스를 만들어보는건 항상 설레는 일이긴합니다. 그런데 막상 프로젝트를 시작하면 머리가 지끈지끈 합니다. 프로젝트의 구조를 설계하는 셋업 단계에서 특히 더더욱 그런것 같습니다 ㅠㅠ 구조 설계 단계가 끝났고 이제 1차 스프린트를 시작하기에 앞서.. 시작하기도 전에 했던 여러가지 고민들과 결론에 대해서 말해보고자 합니다. 무슨 데이터베이스를 선택할까? 이번 프로젝트에서는 데이터베이스 선택부터 너무 힘들었습니다. 저는 주로 도큐먼트db인 MongoDB를 써왔고, 이번 프로젝트에서는 RDB를 써볼까하는 생각을 하였습니다. 혼자 하는 프로젝트이기도 하고 공부도 할 겸 TypeORM + PostgreSQL을 사용할 계획이였습니다. 하지만, 막상 하나..

article thumbnail
[NestJs/트러블슈팅] mongoDB document 반환
Web 2023. 11. 20. 11:17

발단 프로젝트에서 아래 간단한 코드를 실행하던 도중 서버 오류가 발생하였다. 우선 발단이 된 코드는 다음과 같다. async createStat(stat: CreateStatDto): Promise { const newStat = { ...stat, }; const createdStat = await this.statModel.create(newStat); return createdStat } 발생한 서버 오류는 다음과 같다. [MyApp] error 2023-11-20 09:48:40 [ExceptionsHandler] callback is not a function - { stack: [ 'TypeError: callback is not a function\n' + ...code... 처음에는 인터셉..