inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

typeORM에서 ManyToOne, ManyToMany 관하여 질문있습니다.

495

유진

작성한 질문수 5

0

안녕하세요? 좋은 강의 잘 듣고있습니다 ^^
 
강의 보다 질문이 생겼는데,
 
1.
 
아래에서 MayToOne에 있는 user: User; 는 실제 DB테이블에 컬럼으로 들어가지는 않나요?
다른 수많은 Many.. One.. 들도 그렇구요.. 그럼 왜 저렇게 작성해주는거죠?
 
2.
 
강의를들으면서 MayToOne이나 OneToMany 관련 이해를 위해, 다른 자료를 찾아보았는데
단순 하나와 여럿, 여럿과 하나의 관계가 있는 것을 나타낸다고 이해가 되는데, 실제 DB 스키마에서 어떻게 설정되어 사용되는지
이해가 어렵더라구요. 혹시 간략히 설명 부탁드려도 될까요? 감사합니다. (__)
 
 

react typescript docker postgresql nodejs Next.js 클론코딩

답변 1

0

John Ahn

안녕하세요!!
좋은 질문 주셔서 감사합니다. 

혹시 제가 엔티티 만드는 부분에서 관계를 이미 설정했는데
또 fk 칼럼을 다시 만든 부분에 대해서 질문 주신 거죠?! 

이렇게 하면 좋은 점은 조인 없이 관계 테이블의 fk도 조회할 수 있게 됩니다. 

예를 들어서

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} from "typeorm";
import {Profile} from "./Profile";

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column()
name: string;

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

}

이렇게 프로필과 유저 엔티티가 1:1 관계로 있고
이때 join 없이 단순히 User 엔티티를 불러오면 어떤 정보가 올까요? 

User {
     id: 3,
     name: "John"

이런 식으로 올 것입니다. profileId는 오지 않죠...
그러면 profileId를 가져오려면 어떻게 해야 할까요? 

await User.findOne({id: userId}, {relations: ["profile"]}) 이런 식으로 relations 옵션을 이용해서 JOIN을 해와야 가져올 수가 있습니다. 

이런 식으로 가져오면
profile의 Id 뿐만 아니라 gender, photo 모든 칼럼의 정보까지 가져오게 됩니다. 

하지만 이미 칼럼을 명시적으로 생성해놓으면 profileId fk를 받을 수 있게 됩니다. 

현재 저희는 이걸 @Column() 데코레이터를 사용했지만 더 명시적으로 하려면 @RelationId라는 것을 이용해서도 할 수 있습니다.

감사합니다.

toJson을 추가하면 [sub].tsx에서 sub를 받아오지 못합니다.

0

140

2

쿠키 저장이 되지 않습니다.

0

240

1

AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE', (2)

0

597

1

AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE',

0

668

1

overload 에러

0

181

1

docker compose up 오류

0

220

1

부록) remark 강의 중 parmas 오류

0

142

1

3000번은 잘 들어가지는데 80번은 안됩니다.

1

305

0

커뮤니티를 올리고 난 후 404 page

0

219

1

tailwind css 문제인지, className 에 적용한 css가 적용되지 않아요.

0

1054

2

tsx 수정 시 마다 빌드 후 서버 시작 해야하나요?

0

672

2

useState 쳤을 때 자동완성 되는 단축키 무엇인가요? extention 인가요?

0

817

2

리액트 서버 npm run dev 와 npm run build 후 npm start 의 차이

0

4669

2

data 폴더가 생성되지 않아요.

0

537

1

docker-compose up 오류

0

818

1

회원 가입 페이지 기능 생성(3) 중 에러

0

391

2

Entity에 toJSON 코드 입력 후 404 에러

0

259

1

context에서 useEffect 선언 부분 질문 있어요.

0

304

1

src 폴더구조

0

515

2

서버 실행 시 에러 관련하여 답변받고 1차 조치했는데 여전하여서 질문 남깁니다

0

303

1

엔티티 모두 작성 후 서버 실행 시 에러가 발생합니다

0

319

1

회원가입 누르면 404에러가 뜹니다 ;-;

1

440

1

nextjs버젼에 대해서 질문드립니다.

0

380

1

<npm run dev>시 -61 에러가 나타납니다!

0

366

1