인프런 커뮤니티 질문&답변

yisi님의 프로필 이미지
yisi

작성한 질문수

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

typeorm entity(자동 생성하는 법)

TypeOrm @CreateDateColumn() 질문

작성

·

2.3K

0

DB에 Insert 하려고 할 때 TypeOrm에서 Default 값을 넣어주지 않아 에러가 발생했습니다.

(CreatedAt, UpdatedAt 컬럼)

 

그래서 처음에는 Database에서 Table에 Default값을 세팅하고 사용했는데요.

어떤 분이 질문 하신걸 보고 다시 수정해 보는 중입니다.

강의에 있는 소스는

@Column("datetime", { name: "createdAt", default: () => "CURRENT_TIMESTAMP"}) ...

이렇게 적혀있더군요.

근데 Github의 소스에는

@CreateDateColumn()

createdAt: Data;

로만 적혀있었습니다.

 

그리고 @CreatedDateColumn()은 Special Column이라고 아래와 같이 설명이 있던데요.

  • @CreateDateColumn is a special column that is automatically set to the entity's insertion date. You don't need to set this column - it will be automatically set.

저는 이 얘기를 TypeOrm에서 자동으로 입력해 주는 값으로 이해했는데... 막상 해보면 안되더라고요.

 

 

그래서...

만약 Github의 소스와 같이

@CreateDateColumn... 으로 사용하려면 Database에서 Default값을 설정해주어야 하는지

(그렇다면 @CreateDateColumn..은 자동 세팅되는 것이 아니겠죠...)

아니면 영상 강의 상처럼... default() => "CURRENT_TIMESTAMPT"... 로 사용해야 할지요

(물론 영상 강의의 소스는 Database에 그렇게 설정되어 있으니 그렇게 나온것이겠지만요..)

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

일단 CreateDateColumn은 실제 테이블에도 default가 설정되어 있어야 하고, createQueryBuilder가 아닌 create로 만들어야 디폴트 값이 기록이 될 겁니다.

실제 테이블에 default가 세팅되어 있으면 어떤 방법으로 하든 상관이 없게 됩니다. 혹시나 안 되면 다음을 CreateDateColumn에 추가해보세요.

default: () => "CURRENT_TIMESTAMP()"
yisi님의 프로필 이미지
yisi

작성한 질문수

질문하기