Nest.js
-
TypeOrm과 js-joda를 이용한 Date타입 대신 LocalDateTime 타입 사용하기Nest.js/TypeOrm 2024. 7. 6. 20:40
js-joda에서 제공 하는 타입은 다음과 같다.LocalDate : 년,월,일 타입LocalTime : 분,초 타입LocalDateTime : 년,월,시,분,초 타입ZonedDateTime: joda/timezone과 함께 사용하며 특정 국가의 timezone에 따른 타입이외에 다른 기능들은 공식문서에 설명이 되어 있다. @js-joda/core 라이브러리를 설치 한다. TypeOrm의 column 데코레이터의 transformer 프로퍼티와 ValueTransformer를 이용하여 js-joda를 이용하여 날짜 데이터 타입을 보다 효율적으로 다룰 수 있다.js-joda에서 Convert from/ to native js 부분을 참고 utils/convert-date-time.ts transforme..
-
TypeOrm과 Postgresql에서 timestamp을 UpdateDateColumn 데코레이터 사용시 transformer 이슈Nest.js/TypeOrm 2024. 7. 6. 19:01
@UpdateDateColumn 사용시 transformer 프로퍼티 옵션을 사용하면 onUpdate CURRENT_TIMESTAMP가 동작하지 않는다.무슨 말이냐면 @CreateDateColumn, @UpdateDateColumn 데코레이터 사용해서 데이터를 생성 하면 현재 date-time을 자동으로 데이터를 입력 해주는데 만약 필드에 변경이 일어날 경우에 UpdateDateColumn에서 업데이트 된 기준 일자로 다시 해당 칼럼을 업데이트 해주는데 만약에 UpdateDateColumn에 transformer 프로퍼티 옵션을 사용하게 된다면 해당 기능이 제대로 동작 하지 않는다. @CreateDateColumn 데코레이터와 @UpdateDateColumn 데코레이터를 사용 했을때해당 코드는 cre..
-
-
Nestjs ConfigModule 사용시 환경변수 boolean값을 가져올때 string으로 가져오는 문제Nest.js 2024. 6. 24. 14:09
let cookieOptions: CookieOptions = { maxAge: Number(this.configService.get(ENV_COOKIE_MAX_AGE)), secure: this.configService.get(ENV_COOKIE_SECURE),}; CookieOptions에서 secure 프로퍼티의 옵션에는 boolean 값만 올 수 있는데typeof this.configService.get('COOKIE_SECURE')typeof this.configService.get(ENV_COOKIE_SECURE)> this.configService.get으로 .env 에 true나 false값을 가져오면 ***cookie_secure=*** string ***cookie_secur..
-
메일 전송시 Promise.allSettled 사용하기Nest.js 2024. 6. 8. 18:27
Promise.allSettled를 활용해서 여러개의 메일을 전송할때 Promise.allSettled는 Pormise 객체가 성공 했을때 "fulfilled" 실패 했을때 "rejected" 와 상관없이 전부 다 실행이 되고 성공 한값과 실패한 값을 전부 받을 수 있다.그래서 "nodemailer"를 사용 했을때 모두 전송이 완료 되었을때 "fulfilled" 상태값일때 "value"값을 받고 "rejected" 상태값일때 "reason"값을 가지고 mail-log를 만들면 좋을것 같았다. 그러나 nodemailer는 rejected가 되는 상황이 생각보다 많이 없었다. 무슨 말이냐면 예를들어 수신자의 메일 주소가 존재하지 않는 메일주소인 경우에도 fulfilled로 결과를 반환 받는다. 즉, 메일이 ..
-
NestJS에서 repository의 insert메서드로 유동적으로 데이터 생성하기Nest.js 2024. 6. 4. 18:30
// group repository create methodexport interface ICreateGroupArgs{ id: string; name: string; description: string; memberId: string;}async createGroup(createGroupArgs:ICreateGroupArgs){ await this.groupRepository.insert(createArgs)}예를들어 그룹을 생성하는 repository 메서드의 createGroup 메서드를 생성하여 사용하고 있다고 가정 했을때만약에 group-service에서 createGroup 메서드가 있고 createGroupAndCorverImage 메서드가 있다고 가정 해보자. // grou..
-
NestJS Response Dto에 generic을 swagger ApiProperty 데코레이터에 사용하기Nest.js 2024. 6. 4. 14:34
// pagination response{ list:T[]; page:number; totalPage:number; }// cursor pagination response{ list:T[]; cursor:{ after: string; }; count: number; next: string;} 보통 pagiantion이 필요하거나 cursor pagination이 필요한 api는 위와 같은 동일한 response형식을 가질것이다. // feed-get-all-res-dto.tsimport { ApiProperty } from '@nestjs/swagger';import { FeedResDto } from './feed-res.dto';export class Fe..
-
cookie-option secure: true 옵션 사용시 Safari localhost에서 쿠키 저장이 안되는 문제Nest.js 2024. 5. 23. 16:39
Referencehttps://shanepark.tistory.com/454 Safari 에서만 localhost에 쿠키가 저장 안되는 문제 해결문제 쿠키에 JWT 를 저장하고, 토큰값 기반 로그인을 구현 해 두었다. 그런데 Chrome 이나 Firefox, Opera 등 다른 브라우저에서는 다 문제 없이 작동하는데 유독 사파리에서만 동작이 안된다. Network를shanepark.tistory.com secure:true 옵션은 `Marks the cookie to be used with HTTPS only.` 즉 HTTPS에서만 사용가능한 옵션인데 크롬에서는 localhost에서 잘 동작하지만 safari에서는 동작하지 않는다.제목과 그대로 cookie-option중에서 secure:true는 운영 ..