Javasciprt/NestJS 3

[TypeORM] Migration으로 DB 변경하기

어쩌다 시작하게 되었는가? 서비스 중인 웹 서비스에 백엔드 관련 추가 개발 기능을 배포할 일이 생겼다. 추가 개발과 관련해서 DB 테이블에 스키마 변경이 있었다. 이전에 DB 스키마를 변경할 때, TypeORM 옵션에서 synchronize 옵션을 true로 바꿔 변경했다가 데이터가 날아간 경험이 있었다. TypeORM에서도 해당 방법으로 프로덕션 DB의 스키마를 변경하는 것을 추천하지 않는다. This option automatically syncs your database tables with the given entities each time you run this code. This option is perfect during development, but in production you may ..

Javasciprt/NestJS 2024.04.23

[NestJS] TypeORM naming strategy

보통 Typescript로 코드를 작성할 땐, camelCase로 이름 규칙을 작성하는데, Database에선 snake_case로 이름 규칙을 작성하게 된다. 기존에는 TypeORM 데코레이터에서 name으로 이름을 작성했다. @Entity('users') export class UserEntity { @Column({ name: 'last\_name' }) lastName: string; } 코드도 길어지고, 가끔 이름을 빼먹는 경우도 발생하고 문제가 되었다. 찾아보니 typeorm-naming-strategies라는 라이브러리가 있었고, 조금 더 코드를 단순화 할 수 있었다. 사용 설치 npm i typeorm-naming-strategies typeorm module에..

Javasciprt/NestJS 2023.12.26

[NestJS] Request 객체에서 IP 정보 가져오기

Nestjs common 데코레이터 @Ip @nestjs/common 에 있는 @Ip 데코레이터를 통해 IP 정보를 가져오도록 코드를 구현했는데, 공인 IP 주소가 아닌 사설 IP 주소를 가져왔다. 어떤 네트워크에서 접근해도 같은 사설 IP로 기록되는 문제가 발생했다. nestjs-real-ip 라이브러리를 찾아 적용하게 되었다. 공인 IP를 가져오는 것을 확인할 수 있었다. 무엇이 다를까? 기본 데코레이터를 사용하면 Reqeust 객체에서 ip를 조회한다. nestjs-real-ip를 사용하면 내부적으로 request-ip를 사용하는데, 단순히 Request 객체에서 ip를 조회하는게 아니다. request-ip 코드에 getClientIp 함수를 사용하는데, Request Header 객체 내에 IP..

Javasciprt/NestJS 2023.07.28
반응형