강의

멘토링

로드맵

Inflearn Community Q&A

kwa1479392's profile image
kwa1479392

asked

Node and React series that you can learn by following - Creating a Reddit site (NextJS) (Pages Router)

Comment Entity

TypeORM 관련 질문드립니다.

Written on

·

547

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 만 붙이는 경우가 있는데 어떤 경우에 따라 어떻게 달라지고, 무슨 차이가 있는지 궁금합니다.

typescriptreactdockerpostgresqlnodejs클론코딩Next.js

Quiz

데이터베이스 테이블 생성을 위해 TypeORM 엔티티를 사용하는 주된 이유는 무엇일까요?

수동 SQL 쿼리 작성량을 늘리기 위해

데이터 유효성 검사를 피하기 위해

객체-관계 매핑(ORM)을 통해 편리하게 다루기 위해

데이터베이스 백업을 자동화하기 위해

Answer 2

0

안녕하세요 강사님,


그렇다면 어떤 것은 생략하고 어떤 것은 생략하지 않는다는 것인데 그러면 Convention을 유지하는 것 같지 않습니다.

제가 직접 만들 때는 무조건 넣고 하려고 하는데 크게 문제는 없을까요?

0

John Ahn님의 프로필 이미지
John Ahn
Instructor

안녕하세요
우선 @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 이 내부에서 알아서 작업을 하기 때문입니다.
감사합니다.

kwa1479392's profile image
kwa1479392

asked

Ask a question