업무
2022.05.17 17:12

Back-End 관련 정보

조회 수 1439 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
사용법

[참고]
NestJS로 배우는 백엔드 프로그래밍
https://wikidocs.net/book/7059

NestJS DOCS
https://docs.nestjs.com/



package.json

1. npm i : package.json에 들어있는 패키지들을 설치함

디버그 모드실행
npm run start:dev
--> http://127.0.0.1:8000/docs 접속해보면 됨

2. 환경설정 파일 가져오기 (.env)
.env 파일을 Main 프로젝트 폴더 밑에 붙여넣기함

2-1. 로컬에서 작업할 경우
DB_HOSTNAME 을 변경해주고 사용함.


3. 코드 구성
src/main.tx : 예전의 app.js 같은 파일. 모든
 - 모듈을 만들고, controller와 서비스를 붙인다.
src/app.modue.ts : 모듈을 추가할 수 있음

[모듈 추가]
1. 설치
npm i -g @nestjs/cli

2. 모듈 추가
nest g mo laundry
nest g module <모듈 이름>

 - app.module.ts 에 해당 모듈 생성 및 폴더 생성됨

컨트롤러 생성 : 라우팅해주는 것. 주소, 이름 연결.
nest g co laundry

서비스 생성 : 실제 구현부
nest g service laundry

3. 컨트롤러에 서비스 연결 : 기계적으로 외워서 하면 됨
export class LaundryController {
    constructor(private laundryService: LaundryService) {}
}
- 채워 넣기.
- 이유 고민 없이 그냥 넣으면 됨.
- @Controller('laudnry') --> 가 주소가 되는 것임

4. 내용 Sample

- GET 만들기
@Get
함수() {
  구현
}

@Post('new') :  /api/laundry/new 와 같이 하위 라우팅

- 파라미터로 정보를 넘겨 받을 때 : /api/laundry/{item}
    @Post('item')
    createLaundry(
        @Param('item') item: string,
    ) 

- 비슷하게 Query를 넣을 수 있고, Body는 DTO를 만들어서 넣는다
  dto는 다른 폴더에서 복사해서 넣으면 편함

5. @ApiTags('laundry') : 로 Tag를 묶으면 하나의 이름으로 묶임


[DB에 연결하기]
* TYPEORM을 사용한다.
DB를 Class 처럼 사용할 수 있게 해줌

- /src/entities 폴더안에 DB Table의 내용과 구조를 정의해 놓고 있음

1. 사용하고 싶은 Table의 내용을 import 해야함
   다른 모듈의 import를 가져오면 편함

모듈에 임포트 추가 

@Module({
  imports: [TypeOrmModule.forFeature([User, Order])],
  controllers: [LaundryController],
  providers: [LaundryService]
})

 - User와 Order Table (/entities/User.js, Order.js)를 사용하고 싶은 경우

2. 서비스에 constructor 추가

    constructor(
        @InjectRepository(User)
        private userRepository: Repository<User>,

        @InjectRepository(Order)
        private orderRepository: Repository<Order>,
    ){}


3. DTO 추가
- laundry/dto/user.gto.ts 생성
export class createUserInputDtoOrg {
  id: string;
  name: string;
}

PickType을 쓰면 귀찮은것 없이 쉽게 추가가능함
export class createUserInputDto extends PickType(User, [
  'id',
  'pw',
  'name',
  'phone'
] as const) {}


- (서비스) 무조건 async와 await를 해줘야 한다.

    async createLaundry(body: createUserInputDto) {
        const user = await this.userRepository.create(body);
        await this.userRepository.insert(user);
        
        return {
            success: true,
        }
    }

  - insert는 무조건 삽입, save는 key를 체크해서 같은게 있으면 Update

    async getLaundry() {
        const user = await this.userRepository.find();
        return {
            success: true,
            result: user,
        };
    }

   - Get은 더 쉬움

    async getLaundry() {
        const user = await this.userRepository.find();
        return {
            success: true,
            result: user,
        };
    }

4. Try Catch 문 사용하기
try {  
} catch (error) {
throw new BadGatewayException(error.message);
}


-----------------------------------------------------------

github에서 code review 하기


1. Git Download 받기
git clone https://github.com/cleanflylge/stylelab_nest_server.git
git clone https://github.com/cleanflylge/dashboard.git

2. Branch 생성/ 체크아웃
 - 브랜치명 임의 지정 : workingBranch_ungje
git branch workingBranch_ungje
git checkout workingBranch_ungje

3. Commit 생성 & push
git commit
git push origin workingBranch_ungje

4. Pull Request
 - Git Hub 접속 : https://github.com/cleanflylge/stylelab_nest_server
 - 상단의 Pull request 클릭 > New Pull request
 - 병합할 브랜치 : main
   병합될 브랜치 : workingBranch_ungje
   선택
 - Create pull request 선택


5. 대상자(김슬기 선임님)는 리뷰 수행
  - Commit/ 리뷰요청후 알림 메일 또는 메신저 보내기

6. 코드 병합
  - Merge Pull Request 버튼

참고: https://velog.io/@eunjeong/GitHub%EC%97%90%EC%84%9C-%EC%BD%94%EB%93%9C%EB%A6%AC%EB%B7%B0%EB%A5%BC\




Dreamy의 코드 스크랩

내가 모으고 내가 보는

List of Articles
번호 분류 제목 날짜 조회 수 추천 수
506 C 힙 정렬 Heap Sort file 2005.08.10 38231 0
505 Pi 회로부품 메모 1 secret 2019.08.09 1 0
504 JAVA 현재시간 구하기 2015.10.21 7750 0
503 MFC 현재디렉토리의 파일리스트들을 알아오는 클래스 CFindFile 2008.05.07 62459 0
502 MFC 현재 실행된 어플리케이션의 디렉토리 적용하기 2008.05.07 39894 0
501 일반 프리미어 프로 Premier Pro secret 2022.02.04 0 0
500 MFC 프로젝트 Resource에서 파일로 저장하는 방법 2010.11.01 34684 0
499 LINUX 프로세스를 이름으로 단번에 종료하기 2017.06.07 8570 0
498 MFC 폴더가 존재하는 지 확인하고, 없으면 만드는 함수 2010.02.01 58380 0
497 Pi 포토커플러 Photo Coupler 특징, 종류, 출력, 구조, 동작 원리, 파라미터 2019.01.03 25950 0
496 LINUX 패치 파일 만들기와 적용하기 (patch, diff) 2 2012.10.22 35808 0
495 MFC 파일 읽기 전용 해제 및 설정 2009.09.11 54202 0
494 PHP 파일 데이터 저장하고 불러오기(파일 입출력) 2015.09.30 8394 0
493 Pi 파이썬 코드를 이용한 파이카메라 제어 2018.04.24 10333 0
492 C# 트레이 아이콘 만들기 2013.08.05 13125 0
목록
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 9 10 ... 34 Next ›
/ 34

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5