부트캠프

59일차 TIL

ohs020105 2025. 1. 24. 21:15

만약 import { PickType } from "@nestjs/mapped-types"; 경로문제 생기면 
npm install @nestjs/mapped-types 이 패키지 설치해주기.

업데이트 디티오 부분인데
PartialType 이거는 기존의 거의 타입을 변경하고 새롭게 만들어주는 거라고 생각하면 된다. 

우선 순서 
01. entities에서 (스키마프리즈마 라고 생각하면 편함)
1.@Entity: 엔티티 데코레이터를 사용
   name: 'column' 이러면 테이블의 이름을 column으로 하겠다 뜻임.

2. 처음에 어떤걸 사용할건지 지정해줘야 한다.
@PrimaryGeneratedColumn: 기본키 생성하는것.
@IsString : 문자열 타입의 데코레이터가 맞는지 확인
@IsNumber : 숫자 타입의 데코레이터가 맞는지 확인


3. 그 다음 @column()을 입력해주는데 여기서 
nullable: true ? false  이건 true면 안에 값이 없어도 null값으로 넣어줌 
만약 false면 에러를 일으킴.

02. dto (데이터 를 객체화 시켜서 클라이언트로 전송시켜준다 생각하면 편함)

export class *CreateColumnDto* extends PickType(ColumnEntity , ['columnType' , 'boardId', 'columnPosition']) {  
    @IsString() // 데코레이터 사용 ( 문자열 타입 )
    columnType: string;

    @IsNumber() // 데코레이터 사용 ( 숫자 타입 )
    boardId: number;

    @IsNumber() // 데코레이터 사용 ( 숫자 타입 )
    columnPosition: number;
}

PickType : 기존 클래스에서 특정 속성만 선택하여 새로운 클래스를 생성할때 사용됨. 그래서 ColumnEntity라는 클래스에서 가져온 'columnType' , 'boardId', 'columnPosition'이 타입들을 가져와서 CreateColumnDto라는 클래스를 새로 생성 해 줄 수 있다.

03. 컨트롤러 

여기선 별거 할게 없음 
1. 그냥 임포트 해줄 거 해주고 
import { CreateColumnDto } from './dto/create-column.dto'; // 생성 DTO 가져오기
import { UpdateColumnDto } from './dto/update-column.dto'; // 업데이트 DTO 가져오기

2. 만약 인증필요한 기능 있으면( @UseGuards(RolesGuard) // 권한 검증 가져오기 ( 보통 여기서 검증을 진행 ) ) 이걸 진행시켜준다음 다음에 @post같은 메서드를 진행해주면 된다. 

04. 서비스 
lodash : 배열, 객체, 문자열 등의 데이터를 쉽게 조작할 수 있도록 도와줌.
사용법은 함수 앞에 _.(언더바, 컴마)쓰면 된다. 
여기선 아직 구현을 못했지만 대략적인 순서는 
1. 임포트 해주기.
import { Repository } from 'typeorm';

2. 의존성 주입해주기
@Injectable() // 서비스에 리포지토리를 의존성 주입
export class ColumnService { // 서비스 클래스
  constructor( // 인스턴스를 생성할때 쓰이는 메서드
    @InjectRepository(ColumnEntity) // 리포지토리 의존성 주입
    private columnRepository: Repository<ColumnEntity> // 리포지토리 인스턴스 생성
  ) {} // 생성자 메서드
*이걸 주입해줘야 다른 메서드들에서 데이터베이스를 사용이 가능하다.*

3. 메서드 함수 작성해주기 
이건 천천히 해볼 예정.

05. 자신의 작업 모듈
여기선 서비스 작업을 위해 의존성주입 작업을 해주는곳이라 생각하면 편하다.

임포트를 하는데 그동안 작성한 엔티티와 컨트롤러, 서비스를 임포트 해준다.

그 다음 @Module안에 리포지토리 주입 설정, 컨트롤러, 서비스 등록해준다. 
여기서 서비스는 providers에 등록을 해주는데 

providers란? 이거 어디에 사용이 되는건지 물어보기**
에 등록된 서비스는 주로 같은 모듈 내의 컨트롤러나 다른 서비스에서 사용됩니다. NestJS의 의존성 주입 시스템을 통해, 프로바이더로 등록된 서비스는 필요로 하는 곳에 자동으로 주입된다.

06. app.module.ts
이곳에서는 할게 없다. 
1. 우선 임포트를 진행하는데 
아까 자신이 작업물의 모듈과 엔티티를 임포트 해준다. 
(코드내의 주석처리 확인)

2.  typeOrmModuleOptions에서 
 entities: [ColumnEntity], 자신의 작업물의 엔티티를 추가해주면 된다.

그런다음 npm run build 를 해주고

npm run start 를 실행하면 서버가 실행이 되는것을 확인을 할 수 있다.

**테스트 할때 nodemon처럼 사용할려면 npm run srtart:dev 이렇게 치면 된다.

여기서 엔드포인트는 어디에 있음?
그건 컨트롤러 보면 있다. 

'부트캠프' 카테고리의 다른 글

60일차 TIL  (1) 2025.01.27
WIL  (0) 2025.01.24
58일차 TIL  (1) 2025.01.23
57일차 TIL  (1) 2025.01.22
56일차 TIL  (0) 2025.01.21