@Column
기본 컬럼
일반적인 데이터베이스 테이블의 컬럼을 정의할 때 사용한다.
데이터 타입, 길이, null 허용 여부, 기본값 등 다양한 옵션을 지정할 수 있다.
@Column({ type: 'varchar', length: 100 })
name: string;
참고로 @Column() 으로 해두면 자동으로 타입을 추론한다.
@PrimaryGeneratedColumn
기본키 컬럼
자동 증가(primary key) 컬럼을 정의할 때 사용한다.
주로 숫자형(primary key: int)이나 uuid 타입을 사용할 수 있다.
@PrimaryGeneratedColumn()
id: number;
@PrimaryColumn
기본키 컬럼
수동으로 값을 할당하는 기본키를 정의할 때 사용한다.
예를 들어, 문자열로 된 기본키 등을 설정할 수 있다.
@PrimaryColumn({ type: 'varchar', length: 36 })
uuid: string;
@CreateDateColumn
생성 날짜/시간 컬럼 데코레이터
레코드가 생성될 때 자동으로 현재 날짜와 시간이 저장된다.
생성 시각을 자동 관리해주므로, 별도의 값을 넣을 필요가 없다.
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn
변경 날짜/시간 컬럼 데코레이터
레코드가 수정될 때마다 자동으로 업데이트된 날짜와 시간이 저장된다.
@UpdateDateColumn()
updatedAt: Date;
@DeleteDateColumn
삭제 날짜/시간 컬럼 데코레이터
소프트 삭제(soft delete)를 구현할 때 사용한다.
해당 컬럼에 삭제 시각이 기록되면, 실제 데이터는 남아있으면서 삭제된 것으로 간주할 수 있다.
@DeleteDateColumn()
deletedAt: Date;
컬럼 옵션
type
데이터베이스에서 인지하는 칼럼 타입
작성하지 않으면 프로퍼티 타입으로 자동 추론된다.
@Column()
email: string;
@Column({ type: 'varchar' })
email: string;
name
칼럼 이름
프로퍼티 이름으로 자동 추론된다.
@Column()
email: string;
@Column({ name: 'email' })
email: string;
length
값의 길이
// 300자만 입력가능
@Column({ length: 300 })
email: string;
nullable
null 허용 여부
@Column({ nullable: true })
description?: string;
update
find 계열 함수를 사용할 때 기본으로 값을 불러올지 여부.
기본값이 true이다. 최신 @nestjs/typeorm 에선 false여도 에러를 발생시키지 않는 이슈가 있다.
select
아무것도 입력 안했을때 기본으로 입력되게 하는 값.
특정 컬럼을 기본 조회(select) 결과에서 제외하고 싶을 때 사용한다.
보안상 민감한 정보(예: 비밀번호)나 불필요한 데이터를 기본 쿼리 결과에 포함시키지 않기 위해 활용된다.
default
기본값을 설정할 수 있다.
@Column({ default: 0 })
points: number;
unique
데이터베이스 레벨에서 해당 컬럼의 값이 중복되지 않도록 하는 유니크 제약 조건(Unique Constraint)을 설정하는 기능이다. 이는 데이터 무결성을 유지하고, 중복된 데이터 입력을 방지하는 데 중요한 역할을 한다.
@Column({ type: 'varchar', unique: true })
email: string;
enum
export enum Role {
USER = 'user',
ADMIN = 'admin',
}
위와 같은 enum이 있다고 가정했을 때,
@Column({
type: 'enum',
enum: Role,
default: Role.USER,
})
role: Role;
컬럼 내의 속성으로 enum을 지정할 수 있다.
'NestJS' 카테고리의 다른 글
TypeORM - 일대일 관계 구현 (0) | 2025.02.24 |
---|---|
Entity Embedding VS Table Inheritance (0) | 2025.02.24 |
TypeORM - Repository 주입하기 (0) | 2025.02.24 |
TypeORM - Entity로 테이블 생성하기 (0) | 2025.02.24 |
TypeORM - NestJS에 설정하기 (0) | 2025.02.24 |