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을 가질 속성들임을 나타낸 것이다
728x90
'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 |