[BaseModel 적용하기] BaseModel에 작성된 id 프로퍼티를 OneToOne Relation의 외래키로 지정할 수 있나요?
476
작성한 질문수 1
// Base.entity.ts
export abstract class BaseEntity {
@PrimaryGeneratedColumn('increment')
id: number;
@CreatedDateColumn()
createdAt: Date;
@UpdatedDateColum()
updatedAt: Date;
}
// User.entity.ts
@Entity()
export class User extends BaseEntity {
@Column({
unique: true,
})
email: string,
@Column()
password: string,
@OneToOne(() => UserGrade, (userGrade) => userGrade.id)
@JoinColumn()
grade_id: number;
}
// UserGrade.entity.ts
@Entity()
export class UserGrade extends BaseEntity {
@Column()
grade: string;
}
BaseModel이 되는 BaseEntity가 있고, User와 UserGrade가 각각 BaseEntity를 상속받고 있는 형태입니다.
따라서, 각 엔티티의 기본키가 되는 id를 BaseModel에 생성되어 있습니다.
제가 궁금한 점은, User 엔티티 내에 `grade_id` 라는 프로퍼티를 만들고, 이것을 UserGrade의 id와 OneToOne 관계를 맺어주고 싶은데 id 프로퍼티를 찾지 못해 연결을 못했습니다.
제가 시도했던 방법은 추상 클래스가 아니라 생성자를 통해 자식 클래스(엔티티)로부터 id 값을 받아오는 방식을 사용해서 아래와 같이 작성해 봤습니다.
말은 안되지만 이런저런 시도를 해보았는데, 각각 연결이 안되었습니다...
export class BaseEntity {
constructor(obj: BaseEntity) {
this.id = obj.id;
this.createdAt = obj.createdAt;
this.updatedAt = obj.updatedAt;
}
@PrimaryGeneratedColumn('increment')
id: number;
@CreatedDateColumn()
createdAt: Date;
@UpdatedDateColum()
updatedAt: Date;
}
// User.Entity.ts
@Entity()
export class User extends BaseEntity {
constructor(obj: User) {
super(obj);
Object.assign(this, obj);
}
...... 생략
@OneToOne(() => UserGrade, (userGrade) => userGrade.id)
@JoinColumn()
grade_id: number;
}// UserGrade.Entity.ts
@Entity()
export class UserGrade extends BaseEntity {
constructor(obj: UserGrade) {
super(obj);
Object.assign(this, obj);
@OneToOne(() => User, (user) => user.grade_id)
super.id
}
}
혹시 이렇게 BaseEntity에서 공통되는 프로퍼티들을 관리하는 경우에, id 값을 외래키로 지정해서 연결해줄 수 있는지 궁금합니다.
답변 1
0
안녕하세요!
질문을 잘 이해 못하겠습니다.
User 모델에서 grade_id 프로퍼티를 생성하고 Grade의 id 프로퍼티를 연결 잘 하신 것 같은데 어떤 문제가 있는걸까요?
참고로 Typeorm 테이블과 인스턴스화의 상관관계는 없습니다.
감사합니다!
cascade 질문
0
41
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
49
1
process.env port key 에러
0
48
1
추상화
0
51
1
[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상
0
102
2
where 키워드가 들어가는 메서드와 아닌 메서드
0
57
1
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
0
72
1
app.controller app.service 는 지워도되나요?
0
70
1
@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이
0
80
1
포트 3000에서 listen하는 곳까지 넘어가지 않습니다.
0
68
1
PickType 사용 시 `as const`를 꼭 사용해야 하나요?
0
103
2
socket connect 오류
0
98
2
강의를 들으면서 궁금한 점
0
98
2
DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?
0
60
2
커리큘럼 질문
0
100
2
put 요청은 언제
0
90
3
typeorm VS prisma
0
351
2
142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.
0
78
2
User 데코레이터 버그 수정 전달드립니다.
0
68
1
git 주소 부탁드립니다.
0
113
2
nest g resource 명령어 에러
0
99
2
로그인 엔드포인트 관련 질문
0
85
2
yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우
0
149
3
"흔히 사용되는 메서드" 강의 관련 질문입니다~
0
95
2





