전체 글 썸네일형 리스트형 Nest JS 로그 및 설정 [John Ahn] 로그 남기기 애플리케이션을 운영할 때 보면 에러가 날 때가 많이 있습니다. 그럴 때 어디 부분이 문제인지 빠르고 정확하게 파악하기 위해서는 어떠한 곳에서 에러가 어떻게 나고 있는지 보기 위해서 로그 를 보는게 중요합니다. 그래서 이번 시간에는 로그에 대해서 알 아보겠습니다 로그의 종류 Log - 중요한 정보의 범용 로깅 Warning - 치명적이거나 파괴적이지 않은 처리되지 않은 문제 Error - 치명적이거나 파괴적인 처리되지 않은 문제 Debug - 오류 발생시 로직을 디버그하는 데 도움이되는 유용한 정보입니다. -개발자 용- Verbose - 응용 프로그램의 동작에 대한 통찰력을 제공하는 정보입니다. -운영자 용- 로그 레벨은 각자가 정해서 남긴다. 원래 로그 넣는 것은 하나하나 개발하면서 넣는게 .. 더보기 Nest JS JWT/Passport 인증/인가 [John Ahn] 유저 이름에 유니크한 값 주기 두가지 방법 1. findOne 메소드를 이용해서 이미 같은 유저 이 름을 가진 아이디가 있는지 확인 하고 없다면 데이터를 저장하는 방법입니다. 하지만 이 방법은 데이터베이스 처리를 두번 해줘야 합니다. 2. 데이터베이스 레벨에서 만약 같은 이름을 가진 유저가 있다면 에러를 던져주는 방법입니다 두번째 방법으로 구현 - user.entity.ts에서 원하는 유니크한 값을 원하는 필드 값을 정해 주시면 됩니다. 테스트 - 이미 있는 유저를 다시 생성하려 하면 아래와 같이 에러가 나옵 니다. 하지만 그냥 500 에러를 던져버립니다. - Nest JS에서 에러가 발생하고 그걸 try catch 구문인 catch에서 잡아주지 않으면 에러가 Controller 레벨로 가서 그냥 500.. 더보기 Nest JS TypeORM 연동 [John Ahn] TypeORM이란? TypeORM은 node.js에서 실행되고 TypeScript로 작성된 객체 관계형 매퍼 라이브러리입니다. ORM (Object Relational Mapping) 이란? 객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업입니다. ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 사용할 수 있습니다. TypeORM vs Pure Javascript const boards = Board.find({ title: 'Hello' , status: 'PUBLIC' }); //TypeORM db.query('SELECT * FROM boards WHERE title = "Hello" AND status = "PUBLIC" , (err, result) => { if(.. 더보기 Nest JS DTO 및 Pipe [John Ahn] 클라이언트에서 보내온 값들은 핸들러에서 어떻게 가져오나요? Express에서는 bodyParser 모듈을 이용해서 req.body로 클라이언트에서 보내온 값을 받아왔습니다. 이렇게 하면 모든 request에서 보내온 값을 가져올 수 있으며, 하나씩 가져 오려면 @Body('title') title 혹은 @Body('description') description로 가져오면 됩니다 DTO DTO (Data Transfer Object)는 무엇인가요? 계층간 데이터 교환을 위한 객체입니다. DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말합니다. DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체입니다. interface나 class를 이용해서 정의 될.. 더보기 Nest JS 기본 [John Ahn] Nest JS 소개 Nest JS 란? Nest (NestJS)는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구 축하기위한 프레임 워크입니다. 프로그레시브 JavaScript를 사용하고 TypeScript로 빌드되고 완벽하게 지원하며 (개발자가 순수 JavaScript로 코딩 할 수 있음) OOP (Object Oriented Programming), FP (Functional Programming) 및 FRP (Functional Reactive Programming) 요소를 사용할수있 게 해줍니다 Nest JS 는 내부적으로 어떻게 구성되었나요? 내부적으로 Nest는 Express (기본값)와 같은 강력한 HTTP 서버 프레임 워크를 사용하며 선택적으로 Fastify를 사용하도록 구.. 더보기 한입크기로 잘라먹는 타입스크립트 - 타입 조작 및 조건부 타입 및 유틸리티 타입 - [인프런] 섹션 8 타입 조작하기 타입 조작하기 인덱스드 엑세스 타입 keyof 연산자 맵드 타입 keyof 연산자도 사용 템플릿 리터럴 타입 섹션 9 조건부 타입 조건부 타입 소개 주로 제네릭과 함꼐 사용한다. 분산적인 조건부 타입 infer - 조건부 타입 내에서 타입 추론하기 음... 솔직히 조건부 타입 전체적으로 전혀 활용을 어디에 해야하는지 느낌이 안오고 그냥 그렇구나..라고만 느껴진다.. 언젠가 필요성이 느껴지겠지.. 섹션 10 유틸리티 타입 유틸리티 타입 소개 맵드 타입 기반의 유틸리티 타입 1 - Partial, Required, Readonly,Pick, Omit, Record 레코드 타입의 구현 이 한줄로 위에서 길게 작성한 타입을 구현가능 record타입은 객체타입을 만들어준다. 조건부 타입 .. 더보기 한입크기로 잘라먹는 타입스크립트 - 제네릭 - [인프런] 섹션 7 제네릭 제네릭 소개 타입 변수 응용하기 2개의 타입 변수가 필요한 상황이라면 다음과 같이 T, U 처럼 2개의 타입 변수를 사용 다양한 배열 타입을 인수로 받는 제네릭 함수를 만들어야 한다면 다음과 같이 할 수 있습니다. 타입 변수를 제한하는 사례. map, forEach 메서드 타입 정의하기 오른쪽은 파라미터의 타입과 반환형의 타입이 다를때 까지 고려. 제네릭 인터페이스 & 제네릭 타입 별칭 타입 변수 =타입파라미터=제네릭 타입변수=제네릭 타입 파라미터 제네릭 클래스 프로미스와 제네릭 더보기 한입크기로 잘라먹는 타입스크립트 - 인터페이스와 클래스 - [인프런] 섹션 5 인터페이스 인터페이스 오버로딩을 구현하고 싶으면 호출 시그니처를 사용 인터페이스 확장하기 중복된 트로퍼티가 많아서 확장을 이용 또한 인터페이스는 객체 형식이면 상속이 가능하다. 인터페이스 합치기 라이브러리 모듈 보강 할때 말곤 크게 않쓰인다. 섹션 6 클래스 타입스크립트의 클래스 왼쪽과 같이 타입스크립트의 클래스에서는 모든 필드의 타입을 다 적어줘야 오류가 나지 않는다. 타입을 적어주지 않으면 모두 any로 추론되어 에러가 난다.(물론 config파일에서 옵션을 변경하여 안뜨게도 할수 있다.) 또한 오른쪽과 같이 상속을 했을 시 super를 꼭 써야한다. 접근 제어자 원래는 기본인 public으로 설정되어있다. ==> 그럼 인스턴스에서 자유롭게 접근해서 사용이 가능하다. private으로 설정을.. 더보기 이전 1 ··· 31 32 33 34 35 36 37 ··· 45 다음