DEV/Backend

TypeORM Releation 다루기

Beomsu Koh 2023. 1. 26.

TypeORM Releation 다루기

기본적인 사용 방법

import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from "typeorm" import { User } from "./User"  @Entity() export class Photo {     @PrimaryGeneratedColumn()     id: number      @Column()     url: string      @ManyToOne(() => User, (user) => user.photos)     user: User } 

관계는 @ManyToOne, @ManyToMany, @OneToMany처럼 어노테이션으로 join 하는 컬럼을 선언한다

관계를 표현하는 기준은 자기 자신이다. 즉 Many(현재 Entity) To One(join 대상)의 관계가 성립한다
위의 코드에서 Many To One이므로, 사용자는 사진을 여러 장 가질 수 있지만, 사진은 사용자를 여러명 가질 수 없다

join하는 테이블의 어떤 컬럼을 가져올지는 () => User, (user) => user.photos로 표현한다
해석하면 User 테이블과 join하는데 컬럼 Photo는 User의 photos이란 뜻이다

@JoinColumn

JoinColumn은 기본적으로 one-to-one 관계를 나타낸다. option을 주면 다양한 관계도 보일 수 있다
또한 JoinColumn이 있는 Column은 해당 테이블의 foreign key가 된다


@JoinColumn()의 경우, 해당 컬럼에 이미 다른 관계가 정의되어 있으면 정의되어 있는 관계가 덮어씌운다.


@JoinColumn의 name 옵션으로 이미 정의 된 column의 관계를 정의할 수 있다.
아래는 위의 entity를 실제 테이블로 나타냈을 때를 보인다. 보다시피, user,auth 속성은 보이지 않음을 알 수 있다
즉 authid와 userid는 ManyToOne을 가질 속성들임을 나타낸 것이다

'DEV > Backend' 카테고리의 다른 글

Token 방식으로 로그인 구현하기  (0) 2023.01.27
JWT 다루기  (0) 2023.01.26
Mac에서 MySQL 설치  (0) 2023.01.16
TypeORM 다루기  (2) 2023.01.14
Typescript - 모듈 또는 해당 형식 선언을 찾을 수 없습니다  (0) 2023.01.14

댓글