-
NestJs TypeOrm 엔티티 공통 컬럼 관리공부하기/node.js 2023. 2. 24. 18:38
TypeOrm을 사용하여 엔티티를 선언할 때 공통적으로 들어가는 컬럼들을 모든 엔티티에 하나하나 선언하는건
유지보수 측면에서 너무 불편하다고 판단했다.
예를들어 id, created_at, updated_at가 있다.
공통적으로 여러 엔티티에서 사용하는 컬럼들은 쉽게 관리할 수 있도록 추상클래스에 선언한 후 추상 클래스를 extends사용할 계획이다.
클래스가 아닌 추상 클래스를 선택한 이유 : 직접 사용할 일이 없기 때문에 추상 클래스를 선택
1. 공통적으로 사용될 id, created_at, updated_at 컬럼이 선언된 BaseEntity 추상 클래스를 선언한다.
import { CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; @Entity() export abstract class BaseEntity { @PrimaryGeneratedColumn() id: number; @CreateDateColumn() created_at: Date; @UpdateDateColumn() updated_at: Date; }
2. 적용할 Entity의 id, created_at, updated_at 제거한 후 BaseEntity extends 한다.
import { Question } from '../question/question.entity'; import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; import { BaseEntity } from '../common/base-entity'; @Entity({ name: 'survey', }) export class Survey extends BaseEntity { @Column({ comment: '설문지 이름' }) name: string; @Column({ comment: '설문지 설명' }) description: string; @OneToMany((type) => Question, (question) => question.survey) questions: Question[]; }
결과
'공부하기 > node.js' 카테고리의 다른 글
NestJs Controller @Query Pipe 기록 (0) 2023.02.25 NestJs TypeOrm Exception (0) 2023.02.24 NestJs TypeOrm MySql Entity Name Error (0) 2023.02.24 MySql [ Like, Full Text Index ] 테스트 (0) 2023.02.24 nestjs, typeorm-extension을 사용한 seeding (0) 2023.02.22