사실 혼자서 풀 스택으로 프로젝트를 할 때는 Api 명세서의 중요성에 대해서 몰랐다.왜냐면 변경 해야 하면 그때그때 찾아보고 수정하면 되고 적어두면 되니까...
Redis는 속도가 상당히 빠른 인메모리의 키 값 데이터 구조이다.Set, Hash, List, Sorted Set, Streams등의 여러 자료구조를 활용해서 애플리케이션에서 다양한 기능들을 구현해 볼 수 있다.Redis에 대한 설명은 너무 많고 잘 나오기 때문에 패
프로젝트 과정 중에 클라이언트로부터 영상을 받아서 S3에 저장하는 로직이 있었다. 처음엔 로컬 폴더에 저장했다가 경로만 DB에 입력하고... 클라이언트가 넘겨준 동영상을 직접 S3로 올렸다가... 결국엔 클라이언트랑은 동영상을 주고 받지는 않았지만 NestJs에서
하나의 컨트롤러에 라우터를 추가 할 때마다 예외 처리 로직이 들어가고 Client에게 일관된 응답 형식을 위해 변환하는 로직이 들어갔었다. 기존 코드의 이러한 부분들을 별도의 레이어로 빼서 처리해보는 과정을 살펴보자. 그 전에..기존 작성한 프로젝트 코드가 감히 M
처음 모바일 앱 프로젝트를 진행했을 당시 아래와 같이 사용자가 선택한 정렬조건과 필터조건을 적용한 결과를 얻어야 하는 기능이 있었다. 각각의 조건들을 다 조합하여 조회했기 때문에 선택하지 않은 조건들은 조회를 하지 말았어야 했다. 단순히 전부 .andwhere()또
사용이유 Nest에서는 데이터베이스 종류에 상관없이 쉽게 연결을 해서 사용할 수 있는데 가장 일반적인 방법은 각 데이터베이스에 맞는 Node 드라이버를 사용하면 된다. 하지만 나는 Nest에서 MySQL을 연결해 사용할 방법을 찾다가 객체와 데이터베이스 테이블을 매핑
NestJS로 간단한 프로젝트를 진행하다 인증 모듈과 사용자 모듈간 Circular dependency가 발생했다.실제로 이전 프로젝트에서도 이런 문제가 발생했었는데, 그때는 forwardRef()로 해결했던 기억이 있다.이번에도 시작하기 전부터 이 문제가 발생할 것을
MongoDB를 이용하고 있는데 결과로 반환되는 Document들을 인스턴스로 변경하기 위하여 class-transformer의 plainToInstance()를 사용하고 있었다.변환 후 아래와 같이 내부 객체에 접근해야 할 일이 있었는데 license.getName
현재 Nest를 사용하면서 데이터베이스로 MongoDB를 사용하여 처리하는 모듈들이 있다. 기존에 MySQL의 쿼리문들을 ORM이 메서드로 편하게 사용할 수 있게 해주어서 이번엔 Node진영에서 유명한 ODM인 Mongoose를 사용할까 생각했는데 SQL 모르고 OR
객체 지향 프로그래밍을 하면서 지켜야 하는 5대 원칙이 존재한다.
NestJS에서 Transaction의 로직을 어떻게 깔끔하게 적용시킬 수 있을지 생각했다. 적용할 수 있는 방법이 코드에 직접 QueryRunner를 사용하거나 앞선 방식을 개선한 트랜잭션 인터셉터를 사용하는 것이였는데 Spring쪽의 @Transactional()
이번 글에서는 Repository라고 작성했지만 이름이 무엇이건 DB에 접근하는 계층의 단위 테스트를 해보려 한다. 통합 테스트도 있다 보니 또 작성해야 하나 생각할 수 있지만, 데이터가 원하는 형태로 조회되는지, DB에서의 계산 로직이 정상적으로 수행되는지 확인하기
NestJS에서는 내장된 Pipe들 덕분에 쉽게 Request 데이터들을 검증할 수 있고, 원하는 타입으로 변환할 수 있다. 또한, class-validator를 활용한 ValidationPipe덕분에 더 복잡하게 들어오는 데이터들의 검증도 가능하다. 그래서 대부분
NestJS에서 개발을 하며, 코드가 정상적으로 동작하는지 테스트코드를 통해 1차로 확인한다. 단위테스트와 통합테스트를 주로 작성하는데, 단위테스트의 비율이 훨씬 높은 것 같다. 개인적으로 단위테스트를 수행할 때 어떤 생각으로 작성하는지 기록을 남기고자 글을 작성한다