외래키 지정에 관해서
@ManyToOne(() => ProductCategory)
@Field(() => ProductCategory)
productCategory: ProductCategory;외래키를 위와 같이 지정해주는 경우와
@ManyToOne(() => ProductCategory)
@Field(() => String)
productCategoryId: string;이렇게 지정해주는 경우 데이터베이스에 테이블 사이의 관계가 만들어질 때 차이는 없나요?
typeORM과 graphQL 요청시 객체를 그대로 전달하느냐 아니면 string 형식의 id만 전달하느냐 정도의 차이만 있나요?
답변 1
1
안녕하세요! Haewoong님!
관계를 지정해 주는 부분은 결국 TypeORM의 @ManyToOne 이에요!
따라서, @ManyToOne 만 제대로 지정이 되어있으면 등록, 조회(relations) 등 모든 것이 정상적으로 작동합니다!
그러면, 아래의 2개의 차이를 확인해 보아야겠죠?!
1. productCategory: ProductCategory;2. productCategoryId: string;
결국, 위 두 개 모두 class에 속한 내용들이에요. 간단한 class를 하나만 볼까요?
class Monster {
name: string;
power: number;
}보시다시피, name, power 등은 class의 멤버변수예요! 변수의 오른쪽 부분은 타입이네요!
이러한 내용을 바탕으로 위의 결과를 다시 한 번 정리해 볼까요?!
1. productCategory: ProductCategory;2. productCategoryId: string;결국, 위 1번과 2번의 차이는 타입스크립트 차이가 되겠네요!
문제는 2번으로 진행하는 경우, 데이터 등록 및 조회(실제 relations 등을 통한 데이터 조회도 가능합니다)를 하더라도 타입 불일치 문제가 발생하게 됩니다. 왜냐하면, relations으로 조회시, 타입은 string이라고 되어있는데 해당 key 안에는 Category 객체가 들어가 있게 되기 때문이죠!(물론, 타입스크립트를 무시하시고 진행하면 정상작동 되지만, 추천드리지 않아요!)
그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?
0
86
2
강의 전체 소스 코드를 받고싶습니다.
0
77
2
fontawesome 사용 문의
0
80
2
소스 코드 부탁드립니다~
0
87
2
깃 레포지터리 소스
0
87
2
커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요
0
74
2
10-01 Entity TypeOrmModule.forRoot 에 entities
0
89
3
강의 버전관련 문의입니다
0
104
2
Ubuntu 설치 관련
0
62
1
schema.gql 질문 드립니다.
0
51
1
서버 재실행시 Many to Many
0
102
3
input 관련 문의
0
90
2
Rest API 보다는 graphql이 주된 내용인데
0
134
2
강의 전체 소스코드 받을수있을까요?
0
156
1
도커볼륨 마운트 관련
0
127
2
findOne 타입스크립트오류
0
109
1
http => htrtps 호출 인증서 신뢰 오류
0
356
1
self-signed certificate in certificate chain 에러 발생
0
421
1
mongoose 설치 오류
0
143
1
특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)
0
285
2
08-06
0
180
3
구조랑 패턴 관련해서 질문
0
126
2
mydocker
0
129
2
coolsms statuscode 2000 인데 전송안돼는 경우 확인.
0
156
1





