1. 문제
신고엔티티에서 신고당한사람(reportedId)는
유저,게시물,코멘트와 조인할 필요가 있다.
@Entity()
export class Reports {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(() => User, (reporter) => reporter.reports)
reporter: User;
@Column()
reporterId: number;
// 다대다 테이블? 릴레이션 테이블? 아니면 3개 노가다?
@Column()
reportedId: number;
@Column()
description: string;
@Column({
type: 'enum',
enum: ['checking', 'rejected', 'completed'],
default: 'checking',
})
status: 'checking' | 'rejected' | 'completed';
@Column({ type: 'enum', enum: ['user', 'post', 'comment'] })
type: 'user' | 'post' | 'comment';
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt: Date;
@DeleteDateColumn({ name: 'deleted_at' })
deletedAt: Date;
}
2. 시도해본 것들
조인을 안하고 기능을 완성해보려고 했다.
그런데 기능을 만들면서 마지막 신고내역을 구현할때,
reportedId를 통해서 유저,코멘트,포스트 정보와 조인을 해서 정보를 가져와야 했다.
그럴때 우리는 어떻게 해야할지 고민이 되었다.
릴레이션 테이블

이 부분이 감이 오지않아서 튜터님에게 물어봐야 할 것 같다. (한번도 안해본 테이블)
다대다 테이블
@Entity()
export class CollectionItem {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne((type) => Collection, (collection) => collection.collectionItems)
@JoinColumn({ name: 'collection_id' })
collection: Collection;
@ManyToOne((type) => Restaurant, (restaurant) => restaurant.collectionItems)
@JoinColumn({ name: 'restaurant_id' })
restaurant: Restaurant;
@ManyToOne((type) => Post, (post) => post.collectionItems)
@JoinColumn({ name: 'post_id' })
post: Post;
}
기존에 진행했던 테이블
각각 테이블과 조인
@Entity()
export class Report {
@PrimaryGeneratedColumn()
id: number;
@Column()
reportedId: number;
@Column()
type: string;
@ManyToOne(() => User)
@JoinColumn({ name: 'reportedId', referencedColumnName: 'id' })
user: User;
@ManyToOne(() => Post)
@JoinColumn({ name: 'reportedId', referencedColumnName: 'id' })
post: Post;
@ManyToOne(() => Comment)
@JoinColumn({ name: 'reportedId', referencedColumnName: 'id' })
comment: Comment;
}
단순하면서 무식해보일 것 같은 방법
3. 해결과정
해결방법은 찾지 못했다.
내일 튜터님에게 상담받으면서 어떤 방향으로 나가야 할지 고민하고 정해야겠다.
4. 알게 된 점
엔티티간의 관계를 정의하는것이 이렇게 복잡할 줄 몰랐다....
팀원들과 엔티티 얘기하면서 배운 점도 많아서 좋았다.
728x90
'일기 > TIL' 카테고리의 다른 글
TIL: Today I Learned 96일차 [ 최종프로젝트 최종발표 ] (0) | 2023.04.03 |
---|---|
TIL: Today I Learned 95일차 [ 최종프로젝트 25일차 ] (0) | 2023.04.03 |
TIL: Today I Learned 93일차 [ 최종프로젝트 23일차 ] (0) | 2023.03.29 |
TIL: Today I Learned 92일차 [ 최종프로젝트 22일차 ] (0) | 2023.03.29 |
TIL: Today I Learned 91일차 [ 최종프로젝트 21일차 ] (0) | 2023.03.28 |