Database/TypeORM

@RelationId, 특정 필드에 대한 외래 키 값만 가져오기

wam 2024. 8. 2. 22:36

 

@RelationId

  • 이 데코레이터는 엔티티의 관계를 사용하여 특정 필드에 대한 외래 키 값만을 직접 가져올 수 있게 해준다.
  • 관계를 전체 로드하지 않고도 필요한 정보만 가져올 수 있다.

 

 

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
export class Profile {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    gender: string;

    @Column()
    photo: string;
}

 

 

import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn, RelationId } from "typeorm";
import { Profile } from "./Profile";

@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @OneToOne(() => Profile)
    @JoinColumn()
    profile: Profile;

    // 외래 키 값을 직접 참조하는 필드
    @RelationId((user: User) => user.profile)
    profileId: number;
}
  • @OneToOne(() => Profile): User와 Profile 간의 일대일 관계를 정의한다.
  • @JoinColumn(): User 엔티티에서 Profile의 외래 키 열을 정의한다.
  • @RelationId((user: User) => user.profile): User 엔티티에서 profile 관계의 외래 키 값을 가져온다. 이 데코레이터를 사용하면 profileId 필드에 Profile의 id 값이 저장된다.