일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 개발자취업
- 방송대컴퓨터과학과
- 파이썬
- node.js
- JavaScript
- 중간이들
- nestjs
- aws
- 99클럽
- TiL
- 코드잇
- CSS
- 파이썬프로그래밍기초
- 오픈소스기반데이터분석
- Cookie
- 데이터베이스시스템
- redis
- 프로그래머스
- mongoDB
- 코딩테스트준비
- 항해99
- Git
- 엘리스sw트랙
- 유노코딩
- 클라우드컴퓨팅
- Python
- 방송대
- HTML
- 코딩테스트
- 꿀단집
- Today
- Total
목록nestjs (15)
배꼽파지 않도록 잘 개발해요

프로젝트에서 여행 피드(Feed)를 조회할 때, 여행 계획(TravelPlan)과 그 하위 일정(DailyPlan, DailySchedule)을 populate하여 thumbnailUrl을 뽑아내는 기능을 구현하고 있었다. 그런데 실제 데이터베이스에는 DailySchedule이 분명 존재하는데도, API 응답에서는 thumbnailUrl이 null만 나오는 문제가 발생하였다.문제 1. thumbnailUrl이 계속 null만 나옴증상Atlas 에서는 TravelPlan의 dailyPlans 안에 DailySchedule이 잘 들어가 있음.그런데 로그 찍어보면 항상 빈 배열.결과적으로 thumbnailUrl이 null만 반환됨.======= travelPlan['dailyPlans'] [] ========..
NestJS로 API를 개발하다보면 흔히 이런 상황을 마주하게 된다.@Get('our-trip')async getTrips( @Query('pageNumber', ParseIntPipe) pageNumber: number,) { return this.tripService.findAll(pageNumber);} 여기서 /out-trip 경로로 쿼리 파라미터 없이 요청을 보내면 어떤 일이 생길까? 바로 ParseIntPipe(undefined)가 실행되면서 에러가 난다. 왜 기본값(= 1)을 줘도 안 될까? 보통 TypeScript에서는 기본값을 이런식으로 지정한다.@Query('pageNumber', ParseIntPipe) pageNumber: number = 1;"쿼리가 없으면 그냥 1이 들어가겠지..

NestJS 서버에서 express-session과 passport, connect-redis를 사용하여 세션 로그인을 구현하였다.API를 점검하는 도중에 로그아웃에 문제가 있는 것을 발견하였다.어제 몇 시간 동안 테스트한 결과, 자잘한 문제가 다양하게 발생하여 해결하는 것에 시간이 좀 걸렸다.우선 큼직하게 핵심만 요약하면 아래와 같다.세션 로그인/로그아웃 문제 및 해결과정 요약문제- 로그아웃 시 Redis 데이터 삭제 문제: 서버에서는 삭제되었다고 기록되지만, 실제 Redis에서 데이터가 삭제되지 않음. - 쿠키 삭제 문제: 로그아웃 시 쿠키가 완전히 삭제되지 않고, 새로운 값으로 변경됨. - 환경 설정 문제: 세션의 saveUninitialized 설정이 의도치 않게 true로 설정되어 불필요한 세션..

NestJS를 사용하다보면 express에서 Request와 Response 객체를 직접 import 해야할 일이 있다. 예를 들면 Response 객체를 사용하여 클라이언트에 쿠키를 설정하거나 전송해야하는 일, 미들웨어 작성, 거의 없지만 파일 전송 등의 경우가 있다. 컨트롤러에서 만든 API를 Thunder Client로 테스트하던 도중 응답이 pending 상태가 되는 일이 발생하였다. 이럴 경우 무조건 내가 코드를 잘못 쓴 것이기 때문에 컨트롤러부터 살펴봐야한다.auth.controller.ts 파일을 살펴보니 해당 API에서 @Res() 데코레이터를 주입하여 사용하고 있었다. 코드를 아래처럼 수정하면 잘 작동한다. @Res 데코레이터를 삭제하거나, 아니면 @Res 데코레이터를 사용하면서 resp..

글은 아래와 같은 구성으로 이루어진다. Google Cloud API 사용을 위한 설정NestJS에서 OCR 기능 추가 API 사용 중 발생한 타입 오류 해결 원하는 문자열만 추출하기 Google Cloud API 사용 이유지금 특정 학교의 특정학과 학생들(재학생, 졸업생)만 이용할 수 있는 동문 커뮤니티를 만들고 있다. 사용자가 재학증명서나 졸업증명서 이미지를 업로드하고 회원가입 폼을 제출하면 서버에서 사용자의 실명만 추출해서 Users 테이블에서 userName 컬럼에 넣어주는 로직이 필요하였다.이때 이미지에서 텍스트를 추출하는 OCR 라이브러리가 필요하였는데, 자바스크립트에서는 tesseract.js와 Google Cloud Vision의 API를 많이 활용하는 것 같았다.어떤 분의 블로그를 보니..

NestJS에서 SSR을 해야할 일이 생겼다. pug와 ejs를 써봤는데 ejs 문법이 편해서 ejs를 사용하기로 했다.작성한 ejs 파일은 다음과 같다. 안에 서버에서 지정한 변수의 값이 들어간다.예를 들어 nickname이 고길동이면 "안녕하세요. 고길동님!" 이런식으로 렌더링이된다. 작성한 코드는 다음과 같다.ejs 템플릿 엔진 안에 이메일 인증이 필요합니다. 안녕하세요. 님! 회원가입 완료를 위한 이메일 인증이 필요합니다. 아래의 버튼을 클릭하여, 이메일을 인증해주세요. 버튼을 클릭하시면, 중간이들 사이트의 메인..

NestJS는 모듈 기반 아키텍처를 사용하는 프레임워크이다. import와 export만 제대로 해주면 되는 express와는 다르다.이로 인해 의존성 주입(Dependency Injection)과 모듈 간의 관계 설정이 정말 중요하다. 그래서 아래와 같은 깜찍발랄한 오류들을 자주 만날 수 있다.[Nest] 7816 - 2024. 08. 26. 오후 4:47:41 ERROR [ExceptionHandler] Nest can't resolve dependencies of the AuthSessionService (?). Please make sure that the argument Redis at index [0] is available in the AuthModule context.Potential..

현재 진행하고 있는 프로젝트의 로그인 단계는 대략 7단계를 거친다.코드 개발 중이라서 이보다 많아질 수 있다. 아직 부족하다. auth.service.ts 클래스 안에 특정 함수를 정의하고, 이 함수를 다른 함수가 재사용하는 형태가 되었다. 쉽게 말해 클래스 안에서 한 함수를 다른 함수가 끌어다 쓰고 있는 상황이다.지금 로그인 로직만해도 7단계를 거치고 있는데, 이러다보면 AuthService에는 메서드들이 넘쳐나서 개발할 때 필요한 메서드를 쉽게 찾을 수 없다. 클라이언트에서 리퀘스트가 온다고 하면AuthController의 로그인 API→ AuthService의 로그인 메서드이런식으로 깔끔하게 거쳐가게 하도록 하고 싶다.로그인 메서드에 필요한 나머지 메서드들은 AuthService에서 재사용하는 것이..

https://programming-bellybutton.tistory.com/200 [NestJS] res.cookie를 사용하기 위해 Express의 Response를 import 해야함프로젝트 리팩토링을 하고 있는데, Access token은 리스폰스의 리턴값으로 보내주고, Refresh token은 쿠키에 담아서 전송하기로 하였다. res.cookie를 사용하기 위해 Express의 Response를 importNestprogramming-bellybutton.tistory.com지난번에 이런 글을 쓴 적이 있다.글의 요지는 NestJS에서 특정 속성(예: cookie)을 사용하기 위해 express의 객체를 불러와야 한다는 것이었다. 이번 프로젝트에서도 express의 Request 객체를 불러..

프로젝트 리팩토링을 하고 있는데, Access token은 리스폰스의 리턴값으로 보내주고, Refresh token은 쿠키에 담아서 전송하기로 하였다. res.cookie를 사용하기 위해 Express의 Response를 importNestJS에서 Request와 Response 객체를 사용하는 방법은 두 가지가 있다. Express로부터 직접 가져온다 NestJS의 @nestjs/common에서 가져온다 VSCode에서 자동 import를 설정해 놓으면 NestJS의 @nestjs/common에서 가져오게 된다. 그런데 쿠키 전송을 위해 res.cookie를 사용하려면 Express의 Response 객체를 사용해야 한다. res를 import하고 res.cookie를 입력했는데 이렇게 인식하지 못하는..