사용법
[참고]
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\