😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[Nest JS 둜 CRUD κ²Œμ‹œνŒ λ§Œλ“€κΈ°] (24) μœ μ € 이름에 μœ λ‹ˆν¬ν•œ κ°’ μ£ΌκΈ° λ³Έλ¬Έ

πŸ‘©‍πŸ’» λ°±μ—”λ“œ(Back-End)/Nest js

[Nest JS 둜 CRUD κ²Œμ‹œνŒ λ§Œλ“€κΈ°] (24) μœ μ € 이름에 μœ λ‹ˆν¬ν•œ κ°’ μ£ΌκΈ°

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 6. 8. 16:58
728x90
λ°˜μ‘ν˜•

<λ³Έ λΈ”λ‘œκ·ΈλŠ” John Ahn μ˜ 유튜브λ₯Ό μ°Έκ³ ν•΄μ„œ κ³΅λΆ€ν•˜λ©° μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ :-)>

=> λ”°λΌν•˜λ©΄μ„œ λ°°μš°λŠ” NestJS

 

🧸 μœ μ € μ΄λ¦„에 μœ λ‹ˆν¬ν•œ κ°’ μ£ΌκΈ°

μœ μ € 생성할 λ•Œ μœ μ € 이름이 이미 μ‚¬μš©λ˜λŠ” μœ μ € 이름을 μ‚¬μš©ν•˜λ € ν•œλ‹€λ©΄ μ—λŸ¬ 보내기

 

1) repository μ—μ„œ findOne λ©”μ†Œλ“œ μ΄μš©ν•˜μ—¬ 이미 같은 μœ μ € 이름을 가진 아이디가 μžˆλŠ”μ§€ 확인

μ—†λ‹€λ©΄ 데이터 μ €μž₯ν•˜κΈ°

-> λ°μ΄ν„°λ² μ΄μŠ€ 처리λ₯Ό λ‘λ²ˆ ν•΄μ•Ό 함

2) λ°μ΄ν„°λ² μ΄μŠ€ λ ˆλ²¨μ—μ„œ λ§Œμ•½ 같은 이름을 가진 μœ μ €κ°€ μžˆλ‹€λ©΄ μ—λŸ¬ λ˜μ§€κΈ°

 

🧸 λ°μ΄ν„°λ² μ΄μŠ€ λ ˆλ²¨μ—μ„œ λ§Œμ•½ 같은 이름을 가진 μœ μ €κ°€ μžˆλ‹€λ©΄ μ—λŸ¬ λ˜μ§€κΈ° 

πŸŽ€ user.entity.ts

import { BaseEntity, Column, Entity, PrimaryColumn, PrimaryGeneratedColumn, Unique } from "typeorm";

@Entity()
// μœ μ € 이름에 μœ λ‹ˆν¬ν•œ κ°’ μ£ΌκΈ°
@Unique(["username"])
export class User extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    username: string;

    @Column()
    password: string;
}

 

πŸŽ€ user.repository.ts

import { CustomRepositoryCannotInheritRepositoryError, EntityRepository, Repository } from "typeorm";
import { User } from "./user.entity";
import { AuthCredentialsDto } from "./dto/auth-credential.dto";
import { ConflictException, InternalServerErrorException } from "@nestjs/common";

@EntityRepository(User)
export class UserRepository extends Repository<User> {
    async createUser(authCredentialsDto: AuthCredentialsDto): Promise<void> {
        const { username, password } = authCredentialsDto;
        const user = this.create({ username, password });
        
        // λ°μ΄ν„°λ² μ΄μŠ€ λ ˆλ²¨μ—μ„œ λ§Œμ•½ 같은 이름을 가진 μœ μ €κ°€ μžˆλ‹€λ©΄ μ—λŸ¬ λ˜μ§€κΈ° 
        try {
            await this.save(user);
        } catch (error) {
            if (error.code === "23505") {
                throw new ConflictException("Existing username");
            } else {
                throw new InternalServerErrorException();
            }
        }
    }
}

 

728x90
λ°˜μ‘ν˜•
Comments