업무
2022.05.17 17:12

Back-End 관련 정보

조회 수 3342 댓글 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
번호 분류 제목 날짜 조회 수 추천 수
13 업무 ABS / PLA 2017.01.18 7956 0
» 업무 Back-End 관련 정보 2022.05.17 3342 0
11 업무 CTS 테스트 가이드 secret 2015.01.02 0 0
10 업무 Dump 받은 파티션을 mount해서 보는 방법 secret 2015.02.12 0 0
9 업무 Force To Crash Guide 강제로 Crash 내기 secret 2014.11.27 0 0
8 업무 H&A본부 교육 중 IoT / 로봇 관련 내용 secret 2016.08.29 0 0
7 업무 ION memory allocator secret 2014.12.15 0 0
6 업무 Mediaplayer ErrorCode 검색하기(.h파일) secret 2015.01.16 0 0
5 업무 Pen Testing 툴 요약 secret 2019.07.16 0 0
4 업무 Ram Dump Parser 사용법 secret 2014.12.15 0 0
3 업무 SurfaceFlinger dump 하기 secret 2014.12.04 0 0
2 업무 마이크로 버블 Micro Bubble 이란 2016.08.29 11011 0
1 업무 전자저널 이용안내 secret 2016.08.29 0 0
목록
Board Pagination ‹ Prev 1 Next ›
/ 1

나눔글꼴 설치 안내


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

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

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5