업무
2022.05.17 17:12

Back-End 관련 정보

조회 수 1379 댓글 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 Android 대화상자 만들기 메모 2023.11.01 592 0
505 Android Flutter 문법 정리 secret 2023.09.24 0 0
504 일반 PROMPT Example secret 2023.05.22 0 0
503 HTML5 typescript 기본문법 정리 2023.01.13 1197 0
502 HTML5 TypeScript 문법 정리 2023.01.13 983 0
501 HTML5 [TypeORM] TypeORM CreateQueryBuilder 2023.01.13 1159 0
500 HTML5 React 리액트 프로그래밍 Note secret 2023.01.01 0 0
499 JAVA [JAVA] 람다식 기본 예제 1 (map, filter, reduce, collect) 2022.11.04 1186 0
498 PHP [MySQL] 뷰 생성하기(VIEW 생성하기) 2022.10.12 968 0
497 PHP sQL:: JOIN, UNION 사용법 2022.09.05 1034 0
496 PHP SQL :: EXIST , NOT EXIST 2022.09.05 1260 0
» 업무 Back-End 관련 정보 2022.05.17 1379 0
494 C# C#의 $으로 문자열 보간하기 2022.04.28 3615 0
493 일반 3D프린트 가이드 모음 2022.04.02 2017 0
492 일반 프리미어 프로 Premier Pro secret 2022.02.04 0 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