Nest.js 6

EventEmitter (vs 일반 메서드)

직접 메서드 호출 + awiat비동기 함수지만 await로 인해 해당 작업이 완료될 때까지 흐름이 중단됨에러 발생 시 전체 중단: 메서드에서 에러 발생 시, 사용자 생성 로직 자체가 멈춤.직접 호출: notificationService는 직접 호출된 서비스/클래스임.// user.service.tsasync createUser() { console.log('사용자 생성 로직 실행'); // 1️⃣ 직접 메서드 호출 (await 으로 인해 흐름이 중단됨, 에러시 전체 중단 ) await this.notificationService.sendWelcomeEmail('John Doe'); console.log('사용자 생성 완료');} eventEmitter비동기적: emit 호출은 동기적으로 샐행되지만..

Nest.js 2025.12.13

와일드 카드 없이 import 하는 법

CommonJS 방식으로 작성된 패키지를 ESM 으로 불러올때 모듈 시스템 차이 떄문에 아래와 같이 불러와야 함. import * as express-basic-auth from 'express-basic-auth'; [COMMONJS 모듈]이 경우, 모듈 자체가 함수로 내보내지기 때문에 기본 내보내기가 아님// express-basic-auth 내부 코드 (예시)module.exports = function basicAuth() { /* 구현 */ };import * as basicAuth from "express-basic-auth";basicAuth(); // ✅ 사용 가능이렇게 하면 basicAuth가 객체가 아니라 함수 자체가 됨. 하지만 TypeScript는 ES Module 스타일을 따르므로..

Nest.js 2025.10.30

[nest] 객체지향 프로그래밍, Class와 클래스 멤버 (속성,메서드) ex) public,private,static,protected,readonly,abstract

*public: 이 키워드가 붙은 멤버는 어디서든지 접근할 수 있다.클래스 내부, 자식 클래스, 클래스 인스턴스 등 어디서든 해당 멤버를 사용할 수 있다. TypeScript에서는 기본적으로 모든 멤버가 public이다.*private: 이 키워드가 붙은 멤버는 오직 해당 클래스 내부에서만 접근할 수 있다.클래스 외부나 인스턴스에서는 접근할 수 없으며, 자식 클래스에서도 접근할 수 없다.*static: 이 키워드가 붙은 멤버는 클래스의 인스턴스가 아닌 클래스 자체에 속하게 된다.static 멤버는 클래스 이름을 통해 접근할 수 있다. 이는 인스턴스를 생성하지 않고도 사용할 수 있는 멤버를 정의할 때 유용하다.class MyClass { public publicField: string; // 어디서든..

Nest.js 2024.05.13

[nest] Nest.js

Nest.js란?node를 기반으로 한 프레임워크로, 서버 사이드 애플리케이션을 개발하기 위한 프레임워크이다.웹 애플리케이션과 API를 만들때 사용되는데 TS를 사용해 개발된다. (물론 JS로도 개발할 수 있긴 함)CLI를 통해 새로운 모듈 생성시, spec이라는 파일도 함께 생성되어서 유닛 테스트와 e2e 테스트를 할 수 있다. nest에서는 Jest 테스트환경이 자동으로 제공된다.Spring boot와 유사한 아키텍처를 가지고 있다. (모듈 구조, 데코레이터(===Annotation))Angular와 유사한 아키텍처를 가지고 있다. (모듈 구조, 의존성 주입, 컴포넌트 기반 구조, 데코레이터 사용)서버사이드 애플리케이션이란? 웹 애플리케이션에서 페이지를 서버에서 렌더링해 초기 로딩 시 클라이언트에..

Nest.js 2023.11.10

DI/IoC

DIDI는 프로그램의 제어흐름으로 컴포넌트나 클래스 간의 의존성을 외부에서 주입해주는 패턴이다.클래스 내부에서 의존하는 객체를 직접 생성하는 대신, 외부에서 생성한 후 주입해주는 방식을 말한다.코드의 결합도가 낮아지며, 테스트 용이성이 높아지는데 주로 생성자나 메서드 인자로 의존성을 전달함. ex) DI 예시 코드MyService 클래스가 Database 클래스를 의존성으로 주입받아 사용한다.이렇게 하면 Myservice 클래스가 Database의 인스턴스를 직접 생성하는게 아니라 , 외부에서 주입 받아 사용할 수 있어 코드의 결합도가 낮아지고 테스트 용이성이 향상됨// 데이터베이스 연결을 관리하는 모듈class Database { connect() { // 데이터베이스 연결 로직 }}// 서비..

Nest.js 2023.11.06