작성
·
441
0
Comment.ts 파일을 생성할 때,
Comment.ts 파일을 생성할 때,
@ManyToOne(() => User)
@JoinColumn({ name: 'username', referencedColumnName: 'username' })
user: User;
@ManyToOne(() => Post, (post) => post.comments, { nullable: false })
post: Post;
둘 다 똑같은 ManyToOne 인데 형식이 왜 다른지 알 수 있을까요?
Vote.ts 같은 경우에도
@ManyToOne(() => User)
@JoinColumn({ name: 'username', referencedColumnName: 'username' })
user: User;
@ManyToOne(() => Post)
post: Post;
@ManyToOne(() => Comment)
comment: Comment;
이런식으로 같은 데코레이터여도 어떤 것은 () => xx 다음에 무언가를 붙이는 경우가 있고 JoinColumn을 붙이는 경우도 있고, () => xx 만 붙이는 경우가 있는데 어떤 경우에 따라 어떻게 달라지고, 무슨 차이가 있는지 궁금합니다.
답변 2
0
안녕하세요 강사님,
그렇다면 어떤 것은 생략하고 어떤 것은 생략하지 않는다는 것인데 그러면 Convention을 유지하는 것 같지 않습니다.
제가 직접 만들 때는 무조건 넣고 하려고 하는데 크게 문제는 없을까요?
0
안녕하세요
우선 @OneToMany()/@ManyToOne()에서는 @JoinColumn()을 생략할 수 있습니다.
또한 ManyToOne에 파라미터를 보면
1. Type 2. inverseSide 3.Option 입니다.
실제 타입스크립트로 보면
typeFunctionOrTarget: string | ((type?: any) => ObjectType<User>),
inverseSide?: string | ((object: User) => any),
options?: RelationOptions
이렇게 되어있습니다.
저기 inverseSide? <= 이 물음표가 있으면 선택사항을 뜻합니다.
그러기에 정의를 해줘도 되고 안 해줘도 되기에 생략을 한 부분입니다.
세 번째 options 파라미터도 그와 같습니다 ~
생략을 해준다고 해서 다른 현상이 일어나고 하지는 않습니다.
왜냐면 typeorm 이 내부에서 알아서 작업을 하기 때문입니다.
감사합니다.