Nest

송은우·2022년 3월 22일
0

knex.js
에서 쿼리 빌더 같은게 있음
typeorm 할 때는 항상 forfeature로 넣어두기
di로 해야 됨

단수 복수 신경 쓰기. 단수면 객체, 복수면 배열로 온다는 것
new validation pipe에서는, transform : true를 app.use에서 넣어주면, 자동으로 param같은 형식을 바꿀 수 있음
id:number 같은 방식으로 처리 가능
npm i class-transformer를 해야 된다는 점이 있긴 함

provider에 일부가 gateway로 websocket을 처리함
npm i @nestjs/websockets @nestjs/platform-socket.io

실무에서는 redis같은 것으로 현재 참가하고 있는 사람들 빼는 과정이 필요함

websocket은
namespace=> room 순으로 감
namespace는 slack의 workspace,
room은 dm, channel

워크 스페이스 이름은 socket.nsp.name으로 접근 가능함
namespace에다가 정규 표현식을 넣으면 모든 namespace에 접근 가능함 왜냐면 우리는 어떤 이름이 만들어 질지 모르니까

https://www.npmjs.com/package/nestjs-redis
여기 문서에 보면 redis로 처리할 수 있음

커스텀으로 만든 부분은 subscribeMessage 부분임. 그냥 이런 식으로 어디가 뭐가 있는지 생각하는게 더 간단함

provider안에 eventgateway를 담는 것이 아닌
event module을 넣어야 함
provider안에 eventgateway를 넣으면, websocket서버가 복제가 됨. 그래서 module을 을 넣고, module을 불러와서 쓰는 거랑 차이를 보임
module을 import했는데, 안에 provider까지 쓰고 싶으면, 따로 export까지 추가를 해야 함

technique에 file upload 같은 부분을 q보면 multer를 쓰면 됨.
@useInterceptors(fileInterceptor)
UploadedFile,
Filesinterceptor
files가 되고, 배열이 되고

이런 내용들이 공식 문서에 잘 나와 있음

항상 노드 기반이기에, fs 기반으로 돌리는 거 가능하다는거
fs.readDirSync같은 것으로 있는지 검사 가능
mkdirSync로 파일 만들기 가능
이런거 잊지 말자
정적 파일 static 처리, cors 처리, 그런 것들 다 공식문서에 있음
공식문서 구경하기

만약 nest인데, 있다고 들었는데 뭔가가 빨간줄이 뜬다면, 우리는 express에서는 있는데, fastify에서는 없다든가 그 반대든가 하는 문제가 있을 수 있음. 그러면 이제 처음 appmodule만들 때 미리 처리하는 과정을 거칠 수 있음 generator로 nestexpress 라는 것을 명시 하면 됨

nest인데 fastify까지 쓸만한 메리트가 생각보다 적다는 것

빌드 후 npm run start:prod 하면 끝
배포 간단 편안..
ts 에서 js로 빌드 하는 과정을 거쳐야 함. 그냥 ts node를 쓴다면, 많이 구림 메모리도 많이 먹음

ec2에서 micro인 경우에는 build가 메모리가 너무 작다 하면 컴퓨터에서 빌드 하고, github에 올리고, 이를 다운 받아서 쓰면 됨.
ec2 터미널 종료시 자동으로 서버도 같이 꺼짐. 행업이라는 이벤트. 이런것을 막기 위해 forever, pm2를 씀
docker를 사용하는 경우도 많음
pm2 start dist/main.js 를 하면 pm2로 배포가 깔끔함

pm2문서를 봐라.
80 쓸때는 항상 sudo

tdd의 장점은 test코드를 짜기에, 절차를 검증하는 과정이 있기에 체계적임. 만병통치약은 아님.
소스 파일에 있는 것은 unit test기반임. test폴더가 e2e

돈 걸린거, 서버 장애 났던 것

서비스 테스트를 하고 나면 컨트롤러에서 그냥 서비스를 쓰고 올바른 값을 준다고 생각하기
컨트롤러를 통합 테스트로 써먹는 것도 괜찮음. 혹은 모킹하는 방법으로 서비스를 모킹할 수도 있긴 함

e2e는 테스트용 db를 따로 만들기
테스트시 node env가 test 가 된다는 생각
username, password, database를 바꾸면 진짜 db가 바뀜

되게 신기한 문제가 발생함. e2e테스트를 하는 경우, 우리가 원하는 src/entity같은 것이 src 패키지 안에 entity라는 것으로 착각됨. 그래서 jest의 경로를 바꿀 필요가 있음. 그게 모듈 맵퍼임 jest e2e json파일에 있음. test폴더 안에

.. 대신에 src라는 절대 경로로 가는 경우가 많은데 이럴 때 꼭 module mapper가 필요함
package.json에도 넣어 줘야 됨 jest안에 "nodemodulesmapper"넣기

e2e test에도 app.use 설정을 해줘야 됨
supertest로 e2e test 를 함. moxios라는게 axios대신 할 수 있긴 함

profile
학생의 마음가짐으로 최선을 다하자

0개의 댓글