Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리액트
- 배포
- styled-component
- React
- requests
- riotapi
- Object.freeze()
- Recoil
- 전역스타일
- route53
- s3
- AWS
- typeorm
- GlobalStyle
- Python
- mysqlclient
- Django
- 카카오 로그인
- e.preventDefault()
- docker
- code-server
- Github Actions
- 자바스크립트
- 롤
- CloudFront
- e.stopPropagation()
- ACM
- liunx
- nestjs
- ci/cd
Archives
- Today
- Total
군붕이의 메모장
[TypeORM] Entity간 관계 지정시 Column명 커스텀하기 본문
반응형
기본적으로 TypeORM에서 Entity간 관계를 지정하게되면 테이블명+컬럼ID로 생성된다.
board.entity.ts
@Entity('Board')
export class BoardEntity {
@PrimaryGeneratedColumn('uuid', { name: 'board_id' })
boardId: string;
@Column({ type: 'varchar', length: 50, nullable: false })
title: string;
// ...
@ManyToOne(() => UserEntity, (user) => user.userId)
user: UserEntity;
}
user.entity.ts
@Entity('User')
export class UserEntity {
@PrimaryGeneratedColumn('uuid', { name: 'user_id' })
userId: string;
@Column('varchar', { length: 320, nullable: false, unique: true })
email: string;
@Column('varchar', { length: 255, nullable: false })
password: string;
@OneToMany(() => BoardEntity, (board) => board.boardId)
board: BoardEntity;
}
하지만 데이터베이스 컬럼을 생성할때 네이밍 컨벤션은 camelCase보다는 snake_case를 선호하는 편이다.
이 때 typeorm 패키지 내부에 @JoinColumn() 데코레이터를 사용하면 내가 원하는대로 변경이 가능하다.
JoinColumn 데코레이터는 1:1, 1:N 관계에서 Column명을 커스텀하기 위해 사용한다.
name?: string 으로 되어있고 주석으로 Name of the Column 즉 컬럼의 이름을 뜻한다.
board.entity.ts 코드 변경
@Entity('Board')
export class BoardEntity {
@PrimaryGeneratedColumn('uuid', { name: 'board_id' })
boardId: string;
@Column({ type: 'varchar', length: 50, nullable: false })
title: string;
@ManyToOne(() => UserEntity, (user) => user.userId)
@JoinColumn({ name: 'user_id' }) // 원하는 컬럼값을 name으로 추가
user: UserEntity;
}
반응형
'데이터베이스 > TypeORM' 카테고리의 다른 글
[TypeORM] 테이블 생성시 기본값 저장 구현 (0) | 2023.03.05 |
---|