Project
-
[Project] Nest Lifecycle 이해하기Project 2023. 7. 14. 17:55
시작하며 링크프렌즈 프로젝트를 진행하면서 어떤 상황에서 Interceptor를 써야 하고 어떤 상황에서 쓰지 말아야 할지에 대한 궁금증이 있었습니다. 해당 궁금증을 해결하기 위해서는 NestJs LifeCycle에 대한 전반적인 이해가 필요하다고 생각했고, 궁금증을 해결하기 위한 과정과 얻게 된 지식을 기록하려 합니다. 마주친 문제 NestJs 공식문서를 보면 다양한 개념들이 나옵니다. Controller, Middleware, Pipes, Interceptor 등 NestJs의 주요 개념들의 실행 순서와 역할을 정확하게 이해하지 못해 해당 프로젝트의 AuthInterceptor부분의 착오가 있었습니다. NestJs Lifecycle ☞ 우선 Middleware와 Interceptor의 차이점을 알아보고..
-
[Project] Nest 페이지네이션 넘어져보기 (cursor, offset기반) Feat: TypeORMProject 2023. 7. 4. 09:32
시작하며 프로젝트를 진행하면서 2종류의 페이지네이션(Cursor, Offset 기반)을 사용해야 하는 상황이 있었습니다. 두 종류의 페이지네이션의 장단점과 "어떤 상황에서 적절한 사용이 될 수 있을까?"에 대한 고민, 그리고 성능면에서 위 두 종류의 페이지네이션 구현방법이 어떤 차이를 갖는가를 설명하고 기록하려 합니다. 마주친 문제 이전 프로젝트에서 페이지네이션을 구현한 경험이 있었고, 그 프로젝트에서 Cursor기반으로 구현했다고 생각했지만 Offset기반으로 구현을 하는 실수를 했습니다. 이유는 Offset, Cursor기반의 기본개념의 미숙지로 인해 실수를 했던 사실을 인지했습니다. 두 페이지네이션 구현방법과 개념을 다시 찾아보면서 실수를 깨닫고 제대로 된 페이지네이션을 구현 설명하려 합니다. 문제..
-
[Project] Nest seeding 해보기 (typeorm-extension사용)Project 2023. 6. 28. 22:08
시작하며 nest 프로젝트를 진행하면서 페이지네이션과 DB의 성능 측정 및 다양한 기능을 확인해 가며 개발을 하고 싶다는 생각을 하던 도중, seeding(무작위 데이터)를 삽입함으로써 개발을 한다는 사실을 알게 되었습니다. nest에서 typeorm-seeding과 typeorm-extension을 사용해서 seeding을 할 수 있다는 사실을 알게 되었습니다. 마주친 문제 처음 seeding을 구현할 때, typeorm-seeding를 활용했습니다. 하지만 TypeORM버전 0.3.x이후로부터 deprecated 되었다는 것을 알게 되었습니다. 구글링을 통해 알아본 결과 TypeORM0.3.x이후 버전부터 typeorm-extenstion을 사용한다는 내용을 확인 후, 다시 typeorm-extens..
-
[Project] Nest 넘어져보기 (Service, Repository 분리)Project 2023. 4. 18. 09:19
시작하며 nest 프로젝트를 하면서 Service와 Repositoty를 분리하는 것이 좋다는 조언을 얻었습니다. 저는 Service계층에서 직접 DB에 접근하는 방법을 쓰고 있었고, 구글링을 통해 @EntityRepository()를 사용해서 Service와 Repository를 분리하는 방법을 알아냈습니다. (현재 작업 중인 프로젝트에서 typeORM을 쓰고 있습니다) 마주친 문제 typeorm 0.3.x 버전 이후 해당 @EntityRepository()를 사용하게 되면 deprecated라는 문구를 보게 되며, 사용이 불가하다는 사실을 알게 됩니다. 이에 대한 문제 해결을 다루어 보려 합니다. 문제 개선 전) @Injectable() export class UserService { construc..