Wecode -기업협업 인턴 (부트캠프)/기업협업 인턴(프로젝트)

기업협업 1주차 화요일 - 오늘 배운 것 : 현업 개발자의 꿀팁

JBS 12 2023. 10. 31. 22:25

일단 회사에서는 

오전에 nest.js 독학 파보기, 알아서 타고 들어가는 코드 파악

 

오후에 회의를 통해 

git flow, controller.js부터 타고 가는 법, transaction, 등등 안내 후

관리자 api 짜는 미션을 받았다. 

 

우선 typescript, orm, postegre, nest.js에 대해 

처음 접하기에,

독학하면서 헷길린 것들 공유하고. 

 

<Transaction을 보고 싶다면>
Transaction -> user.service.js -> connect, startTransaction (try, catch 안에 담아서, 
에러 없음녀 try 안에 / 에러면 롤백
Transaction도 테스트 / 에러 던지면서  

<관리자 코드>
백엔드 -> nest -> 프론트 admin / 백엔드 admin은 관리자 (다 하나에 있음)


git flow 브랜치 개념, 플로우, 명령어 

 

typescript 구조 , 문법 

 

 

postgresql 구조 , 문법 

 


nest.js 구조 , 문법 

 

직접 차장님께서 설명해주신 부분

 

 

 

Module - express의 index.js 같은 거 (애플리케이션 루트 모듈) 
Controller - 단일 경로 
controller.spc - 컨트롤러 단위 테스트 
Service - 비즈니스 로직
main.ts - NestFactory핵심 기능 사용> Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 항목 


main.ts 에서 


[코드 보는 법] 
모든 건 컨트롤러에서 시작
컨트롤러에서 보면 됨 

nest.js에서는, 라우터도 controller에 있음


데코레이터 ㅡㅡ nest.js에서 제공 
nest.js 는 -> request. 하면 다 나옴 꺼내올 수 잇는거



typescript는 javascript랑 똑같은데, '변수 : 타입'으로 친절하게 해놓은 거 


Typescript는 javascript랑 똑같음
이해할 필요없음 타입만 더 정해준거라 



nest.js layered
모듈 세팅되고 컨트롤러 
모듈 - 컨트롤러 - 서비스 순서로 한 세트

메인: 전체 정의, 모듈 찾아서, 어떤 프로바이더 있는지 찾아서 연결
모듈 = 지도
컨트롤러 (라우터)




typeorm으로 orm, query builder 쓰는데
여기에서는 query builder 사용한 코드




[nest.js]
모듈 - 컨트롤러 - 서비스 순서로 한 세트
-> express는 날것인데, nest.js는 정형화된게 있다.
룰을 외우는게 중요, 이해하는게 아니라. 그게 framework 이라는 것. 이런 틀을 따라라
(node.js는 express보다 nest.js 채용. nest.js를 외우는게 중요)
캡슐화되어 있어서, 하나씩 이게 뭔지 까보고할게 아님. > 다 쓰라고 약속 돼어서 쓰는 것, 쓰라는대로 ㅇㅇ
그래서 룰만 알면 됨 = framework라 ㅇㅇ 그래서 틀 ㅇㅇ 틀대로 외움



각 파일에서 쓰는 
선언함수는, 이 자리에 이게 필요하다는 걸 알고 있어서 쓴게 아니라, 안 썼다고 쓰라고 보여주니, 에러 나오니 하는 거. 

Module에는 가져와야 하는 데이터베이스 명 





User 기준으로 공부해보기 -Module controller. service 거치면서 
(user 회원가입 로그인 flow가 가장 익숙하니, framework만 바뀌는 것을 비교해서 익히는)




Repostiory에서 데이터 호출 
Select 쿼리문이 아니라, find user로 함수로 호출 (함수화) 

 


nest.js 공식문서

 

controllers 파고, 리소스, open api 

예제 연습 

 

https://docs.nestjs.com/controllers  

 

 

 (+ 새로운 기술스택 배우는 법)직접 차장님께서 추천해주신 부분

 

새 기술 스택 공부 방법

express.js와 nest.js를 공부하며 깨달은, 개발자는 새로운 기술 스택 공부에 끝이 없으니 새 기술 스택 공부 방법 - 공식문서를 본다 예제 보며 따라 쳐본다. 틀을 외운다. 다음 api에ㅔ서도 보면서 따

pm-developer-justdoit.tistory.com


Npm run start:dev (nest 백엔드 서버 작동)  

 

 

Npm run start dev로 하면 안 됨. 


 

sql을 쿼리 빌더로 써도 되고, orm으로 써도 된다고 하는 이유!

 

-> orm의 장점! 

orm을 이용하면, 내가 쓰던 mysql로 써도, 알아서 docker (가상 컴퓨터)에 저장돼 있는 postegresql로 변환해주기 때문! 

 


.local.env에서
port 넘버 알 수 있다 

 

.local.env 의 역할!

dbname, username, dbport 넘버랑

front port, server(backend)port 넘버 다르게, 다 적혀 있음.

 

로그인 회원가입 아이디 비번을 메모해놓기도 함 -> swagger로 로그인해서, api 문서 조회 위한 로그인

 


swagger! 

활용하면 자동으로 기입해줌 

(이후 알려주시기로) 

 

내가 독학한 부분 

 

@nestjs/swagger 패키지,, @apiquery, @apiparams 데코레이터

swagger를 이용하기 위한 거라 생각 안 해도 됨 -> @Apiparames 등 등 swagger=. 프론트에게 스펙 전달하는 개발 문서 api document [ openAi와 공부 ] Q: nest.js를 쓰는데 import{ApiBody, ApiParam, ApiQuery, ApiResponse, ApiTag

pm-developer-justdoit.tistory.com

 

params, query parameter를 swagger 덕분에 복습하게 되었고, 

 

Project 2 - 2일차 : [Restful API] 세션/ Path vs. Query parameter

앞으로는 restful api 엄격하게 add, create 가 들어가지 않게 리뷰해서 main branch에 들어가지 않게끔. main branch에는 엄격하게 지켜져야 함 호출할 때, 프론트가 json body에 담아서 가져가는게 아니라, 프

pm-developer-justdoit.tistory.com

 

 

데코레이터 (useGuards, useInterceptors, apiParams)  

 


 postgresql 독학할 땐 안 나왔던 지식

 

docker에서 다운한 postgresql과 

brew에서 다운한  postgresql은 같으나, 

 

docker는 가상환경 (가상의 컴퓨터)에만  postgresql 이 있는 것이고, 

brew로 다운한  postgresql은 로컬에 다운된 것이다! 

 

그런데 나는, 혼자 해본다고 
로컬에 Postgresql을 다운로드 해본 뒤, docker compose up -d로 postegresql을 다운하니까, 
database 연결이 connected 안되는 문제가 생겨 1시간을 에러 해결하였다. 

local의 postgresql를 삭제 하였고, 
삭제했음에도, 연결이 안 되었다고 해서, 

삭제를 했더라도, 
서버 port 넘버가 local postgresql로 돌고 있어서 그런 것을 알게 되었다. 

local 이 우선되어서 그런 것! 

서버를 죽이고 나니 됐다

에러 해결한 케이스 

 https://pm-developer-justdoit.tistory.com/342


 postegresql 독학할 때 검색하면, local에 다운하는 brew로 다운했을 때의 명령어로 나옴

1) local에 다운한  postegresql는 
terminal창에 mysql> 처럼
psql> 로 뜨는데,, 

2) 나는 docker compose up -d 로 postegresql를 다운 받았기에, 
위의 'local로 다운한 postegresql command(명령어)'를 치면, 
psql이 없다고 뜬다. 
'psql>'이 나와야지만 가능한 명령어

3) 검색하면 postegre 버젼 확인 명령어로 나왔다.
검색한 대로 postgres -V 로 하면 
local에 다운 받은 버젼 14.9로, local postegre 용으로확인되었고, 

docker compose up -d 로 postegresql를 다운 받은 버젼 14.4는 -> docker ps 로 해야 버젼이 확인된다

그래서 나의 판단은, local(brew로 설치) 과 docker환경에서의 postegre 
명령어가 다른 거 같다! 

그래서

docker compose로 검색해봄. 


next.js 독학할 땐 안 나왔던 지식

 

entity,

repository 폴더 

 

next.js repository 역할 (대략적) 

 

Sql 은 repostiory에서 만들고(async부분) , orm으로 묶고 

이거를 service에서 불러오는 . 

 


Repostiory에서 데이터 호출 
Select 쿼리문이 아니라, find user로 함수로 호출 (함수화) 


 

typeorm에 있는 Soft -delete 


method를 @Post @Delete 로 표현한다는 것 

 

@delete = method 이름 

@ApiQuery = swagger 


nest.js 의 admin delete api 만들면서 

api flow 이해함