#typescript #next-js

User Entity 생성하기, Relationships

Sep 28, 2022


User 테이블 컬럼


User 엔티티 작성

import { IsEmail, Length } from "class-validator"
import { Entity, Column, Index, OneToMany, BeforeInsert } from "typeorm"
import BaseEntity from './Entity';
import bcrypt from 'bcryptjs';
import Vote from "./Vote";
import Post from "./Post";

@Entity("users")
export class User extends BaseEntity {

    @Index()
    @IsEmail(undefined, { message: "이메일 주소가 잘못되었습니다." })
    @Length(1, 255, { message: "이메일 주소는 비워둘 수 없습니다." })
    @Column({ unique: true })
    email: string;

    @Index()
    @Length(3, 32, { message: "사용자 이름은 3자 이상이어야 합니다." })
    @Column({ unique: true })
    username: string;

    @Column()
    @Length(6, 255, { message: "비밀번호는 6자리 이상이어야 합니다." })
    password: string;

    @OneToMany(() => Post, (post) => post.user)
    posts: Post[]

    @OneToMany(() => Vote, (vote) => vote.user)
    votes: Vote[]

    @BeforeInsert()
    async hashPassword() {
        this.password = await bcrypt.hash(this.password, 6)
    }
}

데코레이터


데이터베이스 인덱스 생성 이유


One to many, Many to one Relationship

엔티티간 관계를 형성하기 위해서는 엔티티에 서로의 필드를 넣어줘야 합니다.

                     ┏━━━━━━━━━━ Post 1
User ━━━━━━━━━━━━━━━━╋━━━━━━━━━━ Post 2
                     ┗━━━━━━━━━━ Post 3

필드 정의

@OneToMany(() = Post, (post) => post.user)
posts: Post[]


*****

© 2021, Ritij Jain | Pudhina Fresh theme for Jekyll.