인프런 커뮤니티 질문&답변

최세환님의 프로필 이미지
최세환

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

typeorm 관계 설정하기

Workspace 관리자 관계 지정 질문

작성

·

167

0

Entity를 보니 Workspace 관리자 필드가 OwnerId인 것 같더라구요! Typeorm 공식문서를 참고했을때 @OnetoOne 데코레이터와 @Jointable 데코레이터만 사용해 1:1 관계를 구현했었는데 따로 @Column 데코레이터로 OwnerId를  또 만드신 이유가 있을까요??

공식문서 참고해서 코드 짰을 때 에러가 떴는데 제로초님 코드 처럼 변경하니 해결돼서 차이가 궁금합니다!

답변 2

0

최세환님의 프로필 이미지
최세환
질문자

어쩐지 @JoinColumn을 사용했을때 OwnerId가 없다는 에러가 계속 나왔었습니다.
답변 감사합니다.

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

OwnerId 컬럼이 따로 있어야 OwnerId 컬럼 자체도 사용할 수 있습니다. (workspace.OwnerId 같은 값)

 

@Column('int', { name: 'OwnerId', nullable: true })
OwnerId: number | null;

@ManyToOne(() => Users, (users) => users.Workspaces, {
onDelete: 'SET NULL',
onUpdate: 'CASCADE',
})
@JoinColumn([{ name: 'OwnerId', referencedColumnName: 'id' }])
Owner: Users;

저는 그래서 보통 Owner(관계)와 OwnerId(실제 컬럼)을 둘 다 적습니다.

 

최세환님의 프로필 이미지
최세환

작성한 질문수

질문하기