회사 숙제로 노드로 백엔드 구성하기를 받았는데~
원랜 Express를 사용할 것 같아 Express로 했는데 자유롭게 구성해도 된다기에
개인프로젝트에서 항상 사용하던 Nest.js + TypeORM으로 해보려한다. (GraphQL)까지 할까?
.
.
우선 왜 Nest.js를 선택했는지!
사실 나는 거창한 이유없이.. 프레임 워크를 선택하는 이유는 ‘편하니까’라고 생각한다.
프로젝트 협업 시 통일된 코드로 개발하기 쉽고 (프레임 워크 특징 이겠지만😅) 다른 사람 코드를
분석 하기에도 편할 수 있다.
개인적으로는 모듈단위로 관리 할 수 있는 점과 어노테이션(@)의 가독성으로
필자는 Nest.js를 좋아한다! (깔끔✨)
물론 말한 것 모두 express.js에서 구현 할 수 있다. 다만 하나하나 설정해줘야함!
Express를 wrapping한 Nest.js를 시작해보쟈. 두개재!
(wrapping 참고 : https://jeonghwan-kim.github.io/2017/10/05/diy-express-day2.html)
.
.
nest /*nest 설치 확인*/
nest g application /*application 생성*/
사실 큰 기능없이 Hello World!! 라도 찍어도 되니 서버를 구성해봐라고 했던 팀장님의 말씀은
Nest.js를 설치하기만 해도 끝나는 부분이다 😂
Express에서는 직접 구조를 잡아 주었다면 설치하나만으로도 뚞딲 만들어진다.
Express에서 직접 만든 구조
Nest.js에서는 어떤걸 사용하나 설치된 node_module을 열어봤다.
오.. 역시 빠질 수 없는 babel부터 typescript도 잘 있다.
Nest.js는 아래와 같이 실행된다.
요청 > 컨트롤러 > 서비스 > 응답
- main.ts 에서 App Module 을 생성하고 실행. 3000 port 에서 대기. app.module.ts 에는 컨트롤러와 서비스가 등록.
- 클라이언트가 endpoint(localhost:3000/) 로 request
- endpoint 가 '/' 인 컨트롤러 호출
- 컨트롤러에서 알맞은 경로로 라우팅하여 해당 핸들러로 가, 연결된 서비스를 호출
- 서비스가 response
.
.
라이프 사이클은 첨부 링크 참조
Swagger 성공, 에러 응답 Decorator 만들기
https://devnm.tistory.com/21?category=1258201
TypeORM (feat. mysql)
npm install --save @nestjs/typeorm typeorm mysql2
나는 정보를 숨기기 위해 2번으로 진행하였는데
MissingDriverError: Wrong driver: "undefined" given.
해당 오류가 나기 시작…🥹
ormconfig.json을 자동으로 찾는다고 했는데…이놈이 못 찾는것 같아서 아래처럼 방법은 바꾸어주었다.
import { TypeOrmModuleOptions } from '@nestjs/typeorm'
const ormconfig: TypeOrmModuleOptions = {
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: '',
database: '',
entities: [
'dist/**/*.entity{.ts,.js}'
],
synchronize: true
}
export default ormconfig
'~ 2024.08' 카테고리의 다른 글
Token 로그인 구현 (feat. 보안이 너무 어려웡🤔) (0) | 2024.02.01 |
---|---|
react-router-dom (0) | 2023.08.02 |
[Nest.js] Mailer Error :: Username and Password not accepted (0) | 2023.05.18 |
INDEX. (1) | 2023.01.18 |
[React] 리액트 컴포넌트 테스트 환경 설정 (0) | 2022.06.28 |