NestJS 24

🛠️ NestJS Prisma 6에서 자료가 없을 때 Seed 데이터 자동 추가하기

NestJS 환경에서 Prisma 6를 사용하여 데이터베이스에 초기 자료(Seed data)가 없을 때 자동으로 데이터를 추가하도록 설정하는 가장 일반적이고 권장되는 방법은 Prisma의 Seeding 기능을 활용하고, 애플리케이션 시작 시 해당 시딩 로직을 실행하는 것입니다.제공해주신 schema.prisma 설정은 모델 정의에 문제가 없습니다. 이제 다음 단계를 따라 시딩 기능을 구현해보세요.1. Prisma Seed 파일 설정package.json 파일에 prisma/seed.ts를 실행하도록 seeding 스크립트를 설정합니다.// package.json 파일"scripts": { "start:dev": "nest start --watch", "prisma:seed": "ts-node pris..

🛠️ NestJS + Prisma에서 MyBatis처럼 XML로 SQL 소스를 관리하는 방법

NestJS와 Prisma를 사용하면서 복잡하거나 동적인 SQL 쿼리를 다룰 때, MyBatis의 XML 맵퍼처럼 별도의 파일에서 SQL 소스를 관리하고 싶을 수 있습니다. Prisma의 raw SQL 기능을 활용하여 이와 유사한 방식으로 SQL을 분리하고 호출하는 방법을 소개합니다.💡 핵심 아이디어: SQL 파일 분리 및 로드Prisma는 raw SQL 쿼리를 문자열로 받기 때문에, 이 문자열을 별도의 XML 또는 .sql 파일에서 읽어와 사용하면 됩니다. XML을 파싱하는 라이브러리를 사용하거나, 단순하게 .sql 파일에 쿼리를 저장하고 파일 시스템 모듈(fs)로 불러오는 방식을 고려할 수 있습니다. 여기서는 더 간단하고 일반적인 .sql 파일을 사용하는 방법을 예시로 들어 설명합니다.1. 📂 프..

✨ Prisma 7과 NestJS, MySQL로 시작하기: 차세대 ORM 가이드

Mustak Sahariar 원작 | 📝 번역 및 재구성🚀 Prisma, 이제 7.0 시대를 열다Prisma는 Node.js와 TypeScript를 위한 강력한 ORM(Object-Relational Mapper)으로, 데이터베이스 모델과 관계를 Prisma 스키마를 통해 정의하고 관리할 수 있도록 돕습니다. 최신 Prisma 7은 더욱 간결하고 빨라졌다고 합니다. (물론 "간결한"지는 좀 더 봐야겠지만요. 😉) Prisma 7에서 가장 눈에 띄는 변화들을 먼저 살펴보겠습니다.🌟 주요 변경 사항Rust 바이너리 제거: Prisma Client가 더 이상 네이티브 Rust 바이너리를 사용하지 않습니다.완전한 TypeScript 재작성: 순수 JS 런타임에서 실행되도록 완전히 TypeScript로 ..

📢 NestJS: 멀티 WebSocket 서버 운용 전략 (4000번 & 4001번)

안녕하세요! NestJS를 사용해 HTTP 포트(3000번)와는 별개로 두 개 이상의 독립적인 WebSocket 서버를 운용하는 방법을 찾고 계시는군요.두 개의 다른 포트(예: 4000번과 4001번)에서 WebSocket Gateway를 구동하는 것은 서비스별로 트래픽을 분리하거나, 각 Gateway에 특화된 로직을 적용할 때 매우 유용합니다.주어진 시나리오를 바탕으로, 서버 모니터링(4000번)과 별도의 실시간 알림(4001번)을 처리하는 두 개의 Gateway를 분리하여 구동하는 예제를 보여드리겠습니다. 🛠️ 1단계: Gateway 클래스 생성 및 설정두 개의 독립적인 WebSocket 서버를 구동하기 위해 각각 다른 포트를 지정하는 두 개의 Gateway 클래스를 생성합니다.1. Monitori..

NestJS + NuxtJS로 실시간 서버 헬스 모니터링 대시보드 만들기 (WebSocket 기반)

Backend (NestJS): 서버의 리소스 상태를 주기적으로 체크하고, 연결된 클라이언트들에게 WebSocket 이벤트를 Broadcasting 합니다.Frontend (NuxtJS): 소켓 서버에 접속하여 데이터를 수신하고, 이를 시각적인 UI로 렌더링합니다. 실시간으로 서버의 CPU, 메모리, 디스크 사용량을 모니터링하고 싶다면?NestJS 백엔드와 Nuxt 3 프론트엔드를 WebSocket으로 연결해서 멋진 대시보드를 만들어보자!키워드NestJS, Nuxt3, WebSocket, Gateway, Socket.io, 서버 모니터링, 실시간 대시보드, CPU 사용량, 메모리 사용량, os 모듈, Chart.js목표NestJS에서 주기적으로 서버 상태(os 정보)를 수집WebSocket Gateway..

IT 일반,소식 2025.12.05

🚀 7부.NestJS와 Prisma로 Raw SQL 쿼리 사용하기 (rowsql)

NestJS 환경에서 Prisma를 사용하여 Raw SQL(로우 쿼리)을 실행하는 방법은 크게 두 가지 헬퍼 함수를 이용하는 것입니다. 이는 SQL 인젝션 공격을 방지하는 안전한 방법으로 권장됩니다.1. PrismaClient의 Raw 쿼리 메서드PrismaClient 인스턴스에 내장된 $queryRaw 또는 $executeRaw 메서드를 사용하여 Raw SQL 쿼리를 실행할 수 있습니다. NestJS의 서비스 레이어에서 PrismaService를 통해 접근하게 됩니다.📝 $queryRaw (데이터 조회)SELECT 쿼리와 같이 데이터를 조회할 때 사용합니다. 결과를 Record[] 형태로 반환합니다.import { Injectable } from '@nestjs/common';import { Pris..

🚀 1부.NestJS와 Prisma로 ORM 끝판왕 되기: 소개 및 기본 설정

NestJS 프로젝트에서 데이터베이스를 다루는 가장 세련되고 효율적인 방법을 찾고 계신가요? 바로 Prisma가 그 해답입니다. 이 글에서는 Prisma를 왜 사용해야 하는지부터 시작해, NestJS 프로젝트에 설치하고 첫 번째 데이터 모델을 정의하는 기본 설정을 단계별로 안내합니다.1.1. Prisma, 왜 사용해야 할까요?데이터베이스를 다루는 방법에는 크게 ORM(Object-Relational Mapping)과 Query Builder가 있습니다.ORM (예: TypeORM, Sequelize): 데이터베이스 테이블을 클래스(객체)로 매핑하여 SQL 쿼리 없이 객체 지향적으로 데이터를 조작합니다.Query Builder (예: Knex.js): SQL 쿼리를 문자열 대신 메서드 체이닝을 통해 구성하..

🖥️ NestJS 및 NuxtJS를 이용한 실시간 서버 상태 구현

NestJS를 사용하여 실제 서버의 상태 정보를 실시간으로 수집하고 NuxtJS(클라이언트)로 전송하는 WebSocket Gateway의 구체적이고 실무적인 예제를 보강하여 제공합니다. 이 예제는 시스템 CPU 사용률을 주기적으로 모니터링하고 클라이언트에 푸시합니다.1. NestJS 프로젝트 설정 및 의존성 설치Node.js 시스템 정보 수집을 위해 os-utils 라이브러리를 사용합니다.# NestJS 웹소켓 관련 의존성은 이미 설치되었다고 가정합니다.# npm install @nestjs/websockets @nestjs/platform-socket.io socket.io# 서버 상태 모니터링을 위한 유틸리티 설치npm install os-utils# 또는yarn add os-utils2. 상태 모니..

NestJS와 텔레그램 연동

1화: NestJS 프로젝트 준비와 텔레그램 봇 생성이번 첫 번째 글에서는 NestJS 프로젝트를 설정하고, 텔레그램 봇을 생성하여 필요한 API 토큰을 발급받는 과정을 다룹니다.1. NestJS 기본 프로젝트 초기화가장 먼저 NestJS CLI를 사용하여 새로운 프로젝트를 생성합니다. 아직 CLI가 설치되어 있지 않다면 아래 명령어를 실행해주세요.npm i -g @nestjs/cli텔레그램 봇 프로젝트를 위한 디렉토리를 만들고 초기화합니다. 프로젝트 이름은 telegram-bot-nest로 지정하겠습니다.nest new telegram-bot-nest프로젝트 생성 시 옵션 선택:npm 또는 yarn을 패키지 관리자로 선택합니다.NestJS는 TypeScript 기반이므로 기본 설정을 유지하고 진행합니다..

실무형 프로젝트 구조 예시 (Feature-First + DDD/Clean)

실무에서 대규모 NestJS 애플리케이션을 구축할 때는 단순히 controller-service-module로 나누는 계층형 구조를 넘어, 도메인 중심 설계(Domain-Driven Design, DDD) 또는 클린 아키텍처의 개념을 NestJS의 모듈(Module) 시스템에 통합하여 구조화하는 것이 일반적입니다.이러한 접근 방식은 기능(Feature) 또는 도메인(Domain)을 기준으로 코드를 분리하여 확장성과 유지보수성을 극대화합니다. 1. 프로젝트 폴더 구조 (예시)src/├── app.module.ts # 루트 모듈├── main.ts # 애플리케이션 진입점│├── common/ # 1. 공통 및 공유 자원 (Sha..