eslintrc.js -> 개발자들이 특정한 규칙을 가지고 코드를 깔금하게 짤 수 있게 도와주는 라이브러리. 타입스크립트를 쓰는 가이드라인제시,등등prettierrc -> 주로 코드형식을 맞추는데 사용함.. 코드 포멧터 역할nest-cli.json -> nest 프로젝
모듈은 @Module () 데코레이터로 주석이 달린 클래스입니다. @Module () 데코레이터는 Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타 데이터를 제공합니다.각 응용 프로그램에는 하나 이상의 모듈 (루트 모듈)이 있습니다. 루트 모듈은 Nest가 사용
일반적으로 비밀번호를 저장할때 1234로 저장하는데 1234로 DB에 들어가면 큰일난다 보안상 이슈가 생기기때문.bcryptjs는 위와같은 상황이 생기지 않기 위해서 비밀번호를 db에 insert할때 SHA256등으로 해시를 해서 이 해시값을 복호화하는 것이 아니라 사
passport모듈 클라이언트가 요청을 보낼때 서버에서jwt 토큰을 만들어서 응답시에 jwt토큰을 http header에 실어서 보내줍니다. 이때 브라우져가 이 토큰을 가지고 있다가 클라이언트에게 인증이나 권한이 필요한 요청이 오면 http header에 있는 jwt
애플리케이션을 운영할 때 보면 에러가 날때가 많이 있습니다. 그럴때 어디 부분이 문제인지 빠르고 정확하게 파악하기 위해서는 어떠한 곳에서 에러가 어떻게 나고 있는지 보기 위해서 로그를 보는게 중요합니다.Log - 중요한 정보의 범용 로깅Warning - 치명적이거나 파
소스코드안에서 어떠한 코드들은 개발환경이나 운영 환경에 이러한 환경에 따라서 다르게 코드를 넣어줘야 할때가 있고, 남들에게 노출되지 않아야 하는 코드들도 있습니다. 이러한 코드들을 위해서 설정 파일을 따로 만들어서 보관해 주는것이 좋습니다.runtime도중에 바뀌는 것
https://docs.nestjs.kr/faq/request-lifecycle일반적으로 요청 수명주기는 다음과 같습니다.들어오는 요청글로벌 바운드 미들웨어모듈 바운드 미들웨어글로벌 가드컨트롤러 가드루트 가드글로벌 인터셉터 (프리 컨트롤러)컨트롤러 인터셉터 (
JWT 에 대한 내용은 문서를 참고하시거나 제 티스토리블로그에 정리 돼있습니다.https://25gstory.tistory.com/120모듈 설치 명령어먼저 DI를 해줘야 service해줄때 사용할 수 있다.
예를들어 회원가입을 진행할때 프론트단에서 백엔드 api로 통신하는 중에 password같은 중요한정보는 중간에 누군가가 낚아 체갈 수 있기때문에 숨겨주는것이 보안상 더 좋은데 이때 사용하면 유용한것이 몽고디비에서 제공해주는 visual Field라는 기능을 사용하면 좋
간단하게 생각하면 api문서를 자동으로 만들어주는 라이브러리이다.nestjs버전이 7버전이라면 swagger버전을 4버전으로 다운그레이드 해야합니다.main.ts에서 설정을 해준다.이렇게 문서가 있어야 협업을할때 소통이 원활하게 이루어 진다.@ApiOperation({
dochttps://docs.nestjs.kr/fundamentals/circular-dependencyNestJS에서 모듈끼리 모듈을 공급받다 보면 서로 계속 공급을 해주는 고리가 형성돼서 순환종속성 문제가 생긴다.이를 해결하기 위해선 nestjs에서 제공하
이미 서비스가 진행중인 웹사이트에서 swagger에 아무런 인증이나 권한없이 들어갈 수 있게 된다면 그 프로젝트의 구조를 다 알려주는 꼴이 돼 버리니 보안상에 아주 치명적인 손해를 받을 수 있다.기본적으로 위 라이브러리는 express위에서 동작하고 nest또한 exp
서버에서 html을 렌더링해서 브라우져에 전달해 주는것서버에서 완성된 페이지를 한번에 브라우저에게 전달해서 사용자가 원하는 페이지를 보여주는 것이다.완성된 페이지를 보여준다는 장점이 있지만 그렇기때문에 서버사이드에서 렌더링이 늦어지면 그만큼 페이지를 리턴하는 속도가 느
해당 블로그를 참고 해서 해결 했습니다.감사합니다.https://haeunyah.tistory.com/m/123
템플릿 엔진 모듈 MVC패턴으로 개발을 하기 위해선 일반적인 백엔드api개발과는 달리 서버 사이드에서 view를 랜더링을 다 해서 브라우져에게 전해 주기 때문에 템플릿 엔진이 필요하다. 모듈 다운 doc https://docs.nestjs.com/techniques
소켓프로그래밍? 프로그램을 만들다보면 항상 연결돼있어야 하는 서비스들이 생기기마련이다 가령 채팅서버를 만든다던지 계속적으로 클라이언트와 서버가 연결된 상태에서 서로 양방향으로 통신을 하는 방식이 필요한 프로그램의 솔루션 중 하나가 소켓이다. NestJs에서 소켓프로그
기본적으로 백엔드에서 db관련 로직을 실행해 줄때에는 웬만하면 트렌젝션처리를 해주는것이 기본이다.예를들어 회원정보를 수정하는 로직이 있다고하고, 해당 작업이 진행중에 어떠한 오류로 인해서 작업이 중단됐을때 Transaction을 걸어줬다면 해당 작업을 하기전으로 데이터
TypeOrm에서 제공해주는 트랜잭션 처리는 크게 4가지 정도의 방법을 사용한다. queryRunner의 장점은 수동으로 트렌젝션 제어를 하기때문에 좀 더 유연하게 트랜젝션 처리를 할 수 있다는 장점이있습니다.하지만 문서에서처럼 new해서 들고오는 방법은 nest에서
이벤트루프 이벤트 루프는 시스템 커널에서 가능한 작업이 있다면 그 작업을 커널에 이관합니다. 자바스크립트가 단일 쓰레드 기반임에도 불구하고 Node.js가 non-blocking I/O 작업을 수행할 수 있도록 해주는 핵심 기능입니다 이벤트루프의 6단계 이벤트루프에
저는 ORM기술을 springboot에 JPA부터 배워서 그런지처음에 typeorm문서를 읽어봤을때 쿼리빌더를 쓰면 생산성이 너무 떨어지지 않을까...? 하는 막연한 마음에 대충보고 넘어갔었는데 이게 나중에 문제를 불러올줄은 꿈에도 몰랐다.처음에 1:N의 user와 b
ORM (Object-relational mapping)은 객체와 데이터베이스 시스템을 연결(맵핑)해주는 라이브러리다. 세상엔 다양한 데이터 베이스 시스템이 있고 이를 다양한 방식으로 연결해야 하는데, ORM은 이렇게 둘 사이 (소스와 애플리케이션)의 연결을 도와주는
ORM (Object-relational mapping)은 객체와 데이터베이스 시스템을 연결(맵핑)해주는 라이브러리다. 세상엔 다양한 데이터 베이스 시스템이 있고 이를 다양한 방식으로 연결해야 하는데, ORM은 이렇게 둘 사이 (소스와 애플리케이션)의 연결을 도와주는
기본적으로 제가 알기론 TypeOrm은 아직 1점대 버전이 아니고 토이프로젝트에서 사용해 본 결과 관계가 복잡해 질수록 orm함수들을 가져오지못하고 쿼리빌더로 직접 쿼리를 짜서 데이터를 가져와야했습니다. 그래서 그때 토이프로젝트에서 느낀바론 '이럴꺼면 orm을 왜쓰지?