inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

웹소켓 연동하기(socket.io, gateway)

AWS-RDS 사용중인데 createdAt 시간이 실제 시간과 맞지 않습니다.

1036

jeongho218

작성한 질문수 9

0

캡처.JPG

왼쪽은 엣지 inprivate, 오른쪽은 크롬 시크릿 모드 브라우저입니다.

서로의 채팅 입력 시간이 9시간 전으로 표시되고 있습니다.

 

실제로 서버의 createdAt은 한국 표준시라고는 되어있지만 실제 시간보다 9시간 느린 시간이 저장되었고

 

entities/channelChats.ts의 설정 내용은 강사님의 깃헙 내용과 동일했습니다.

 

aws - rds에서 확인해본 DB도

지역이 ap-northeast-2a, 서울로 잘 지정되어 있었습니다.

 

혹시 작업 중에 이런 경우 보신 적 있으신가요?

어디를 더 살펴봐야 서버에 제대로 된 현재 시간이 저장될 수 있을지 조언 부탁드립니다.

node.js express nestjs typeorm

답변 1

0

제로초(조현영)

utc로 현재시간을 저장해야 하는데 한국시간으로 저장돼서 9시간 차이가 나네요.

서버와 DB의 타임존을 확인해야 합니다. 혹시 임의로 서울 시간으로 수정하신 게 있으신가요?

서버에서 node를 입력하고 new Date() 쳐서 나오는 시간을 확인해보세요.

0

jeongho218

아뇨 제가 사전에 시간을 설정했던 적은 없습니다.

 

서버의 타임존은 Asia/Seoul이며 new Date()의 결과는 아래와 같습니다.


// 2023년 11월 18일 오후 4시 34분 기준

console.log(new Date());
// 2023-11-18T07:34:51.817Z

console.log(Date());
// Sat Nov 18 2023 16:34:51 GMT+0900 (대한민국 표준시)

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone);
// Asia/Seoul

 

DB의 타임존이 UTC이고 실제 시간보다 9시간 느리네요

캡처.JPG

 

DB는 nestjs가 typeorm 통해서 전달하는 데이터를 저장만 하니까,

nestjs에서 타임존 아니면 시간을 설정해주면 해결될 것 같은데.. 맞을까요?

0

jeongho218

부분적으로 해결한것 같습니다...

 

인터넷에 검색해보니 ormconfig.json 아니면 app.module.ts에서 timezone 옵션을 넣어줄 수 있다는걸 확인했고

저는 ormconfig.json이 없어서 app.module.ts에서 아래처럼 timezone 옵션 넣어줬습니다

TypeOrmModule.forRoot({
timezone: 'Asia/Seoul',
}),

 

브라우저에서 채팅을 보낸 시간이 제대로 찍히는데

캡처.JPG

DB에서는 여전히 9시간 전으로 저장되었네요

 

저는 DB는 nestjs가 typeorm 통해서 전송한 데이터를 고스란히 저장만 할거라고 생각했는데 아닌걸까요?

DB에도 타임존 설정이 필요한걸까요?

0

제로초(조현영)

@@time_zone을 SYSTEM으로 바꿔보세요. 저는 now()를 할 때 타임존이 붙지 않습니다

0

jeongho218

AWS RDS에서 설정할 수 있는 타임존에는 SYSTEM이 없어서 'Asia/Seoul'로 설정하였습니다

image

DB 타임존, 시간 변경 확인하였고

image

이후 테스트 해보니 이번에는 DB에는 현재 시간이 저장되나

브라우저에서 상대방의 채팅 입력 시간이 9시간 빠르게 표시되었습니다.

image

image

다시 app.module.ts에서 TypeOrmModule의 timezone: 'Asia/Seoul' 옵션 제거하였고

브라우저 DB 모두 정상적으로 시간 나오는 것 확인했습니다..

image

image

 

문제 해결은 했지만 어째서 이런 현상이 발생하는지 이해가 가지 않습니다

express+sequelize와 동일한 RDS 인스턴스 사용할때는 잘못된 시간이 저장되는 일은 없었거든요

왜 이런걸까요.. 혹시 nest typeorm 사용하시던 중에 이런 비슷한 상황 보신 적은 없으신가요

0

제로초(조현영)

저도 처음 보는 현상이네요. DB의 타임존이 Asia/Seoul이라서 typeorm의 타임존을 Asia/Seoul로 맞춰준 적은 있는데, 반대로 typeorm의 타임존 Asia/Seoul을 제거한 건 처음 봅니다.

강의자료는 어디서 다운받나요?

0

110

3

질문 있습니다.

0

294

3

(강의 5:42 질문) providers를 통한 여러 개의 인스턴스 생성 & exports 통한 싱글톤 생성

0

154

2

코드 편집기 확장 프로그램

0

209

2

(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?

0

143

2

(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문

0

166

3

로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.

0

152

2

로그인방법이 고민됩니다.

0

190

2

yarn seed 명령어 실행 시 데이터 삽입 안됨

0

296

4

yarn run db:create 시에 발생하는 데코레이터 오류

0

242

2

npm run db:create 시에 발생하는 decorating 오류

0

231

2

RxJS 디버깅 질문 있습니다.

0

187

3

CacheManager에 대해 질문 있습니다.

0

173

2

로깅은 어떻게 하는게 효율적일까요?

0

224

1

CORS 질문 있습니다.

0

417

2

쿠키 옵션에 대해서 질문 있습니다.

0

184

2

로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??

0

447

1

401 unauthorized문제

0

286

1

가드의 장점에 대해서 질문이 있습니다.

0

225

1

로그 관리에 대해 질문 있습니다.

0

252

2

CORS 에러 질문 있습니다.

0

318

2

배포 환경 DB 연결 질문 있습니다.

0

411

2

socket io 미 연결 문제 (nest & flutter)

1

1154

3

no elements in sequence 에러 관해서 질문이 있습니다.

0

454

1