업무
2022.05.17 17:12

Back-End 관련 정보

조회 수 3721 댓글 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
번호 분류 제목 날짜 조회 수 추천 수
» 업무 Back-End 관련 정보 2022.05.17 3721 0
494 C# C#의 $으로 문자열 보간하기 2022.04.28 6475 0
493 일반 3D프린트 가이드 모음 2022.04.02 4781 0
492 일반 프리미어 프로 Premier Pro secret 2022.02.04 0 0
491 Android [Git] git add 취소하기, git commit 취소하기, git push 취소하기 2021.09.30 8028 0
490 일반 엑셀 Excel 데이터 시각화 (엑셀 사용 Tip) 2021.08.25 5116 0
489 Android 안드로이드 스마트 폰 화면 미러링: scrcpy 사용법 2021.08.18 40729 0
488 일반 Cakewalk 단축키 정리 2021.07.20 6240 0
487 일반 Cakewalk secret 2021.07.20 0 0
486 C# C# JSON 파싱(parsing): Newtonsoft 및 System.Text.Json 2021.05.15 13370 0
485 C# C# ?? 및 ??=, ?. 연산자 2021.05.09 5516 0
484 Android Android Animation Interpolator(보간기) 종류 2020.12.01 7545 0
483 Android Android Animation XML 사용 2020.12.01 5892 0
482 Pi 라즈베리파이 웹페이지 자동 실행 설정 방법 secret 2020.11.03 0 0
481 PHP [PHP] .php 확장자 없이 URL 접속하기 2020.10.26 6955 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