nestjs
[Gosrock/Nestjs] PageDto를 이용한 페이지네이션 구현하기 (Paging)
고스락 티켓 예매 페이지 22th 프로젝트의 일부인 페이지네이션 / 페이징 구현에 대한 글입니다 어드민 페이지에서 내가 구현한 티켓 서비스의 티켓을 특정 조건에 맞게 N개 가져올 필요가 있었다 그래서 페이지네이션을 제네릭을 이용하여 구현하게 되었다 언제 들었는지 기억은 안나지만 이런 말이 문득 생각난다 개발자가 힘들수록 사용자는 편리해진다 페이지네이션도 그렇다 서버 개발자는 페이징 구현이 귀찮고 짜증나지만 그것을 사용하는 프론트 개발자는 편할지어니,,,,,, 🔨 PageOptionsDto 구현 📝 enum.ts enum PageOrder { ASC = 'ASC', DESC = 'DESC' } 오름차순 / 내림차순 옵션을 위한 Enum 이다 📝 page-options.dto.ts export class P..
[Gosrock/Nestjs] Guard 사용중인 Controller 내부 특정 메소드에 모든 접근 허가하기 (NoAuth)
고스락 티켓 예매 페이지 22th 의 일부인 @NoAuth 데코레이터 구현에 관한 글입니다 우선 이 글은 Nestjs 에서 AuthGuard 등의 Custom Guard 구현에 대해 알고 있다고 가정하고 작성했습니다 📝 Reference Guards - https://jakekwak.gitbook.io/nestjs/overview/guards 🔍 문제 상황 우선 고스락 티켓 프로젝트에서는 AccessTokenGuard 라는 커스텀 가드를 구현했고 이는 Role 기반으로 엑세스 토큰에서 유저와 그 권한을 뽑아와서 해당 요청 메소드에 접근 권한이 있는지 확인하고 접근 인가 / 불가 처리를 하는 것이다 자세한 것은 고티켓 팀장님의 포스팅을 참고하십쇼 https://devnm.tistory.com/16?cate..
[Gosrock/Nestjs] Socket.io 사용하여 실시간 공연 입장 시스템 구현하기
학교 컴공 밴드 동아리 고스락 여름방학 프로젝트인 고스락 티켓 예매 페이지 22th 의 일부인 socket 구현에 대한 글입니다 nestjs + socket.io 를 사용하여 구현하였습니다 📝 Reference nestjs + socket.io(EventsGateway) - https://www.youtube.com/watch?v=gkJ1N6PDCEc&t=690s chat app with nestjs - https://www.youtube.com/watch?v=7xpLYk4q0Sg&t=722s docs nest js (gateway) - https://docs.nestjs.com/websockets/gateways 💻 socket.io 모듈 설치 npm i @nestjs/websockets @nestjs..
[NestJs] 따라하면서 배우는 NestJs - 9 (로그, 설정)
✅ Logger 모듈 추가 📝./src/main.ts import { Logger } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const logger = new Logger(); const port = 3000; const app = await NestFactory.create(AppModule); await app.listen(port); logger.log(`Application running on port ${port}`); } bootstrap(); expressjs 에서는 Winston 모듈을..
[NestJs] 따라하면서 배우는 NestJs - 8 (권한 부여, 유저와 게시글 관계 부여)
✅ Boards 모듈에서 AuthGuard 사용하기 📝./src/boards/boards.module.ts import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AuthModule } from 'src/auth/auth.module'; import { BoardRepository } from './board.repository'; import { BoardsController } from './boards.controller'; import { BoardsService } from './boards...
[NestJs] 따라하면서 배우는 NestJs - 7 (JWT, passport 이용한 인증 구현)
✅ JWT, passport 모듈 추가 npm i @nestjs/jwt @nestjs/passport passport passport-jwt --save ✔ @nestjs/jwt - nest에서 jwt를 사용하기 위한 모듈 ✔ @nestjs/passport - nest에서 passport를 사용하기 위한 모듈 ✔ passport - passport 모듈 ✔ passport-jwt - passport와 jwt를 연동하기 위한 모듈 📝./src/auth/auth.module.ts import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passpor..
[NestJs] 따라하면서 배우는 NestJs - 6 (auth 모듈 구현)
✅ 인증을 위한 auth 모듈 생성 nest g module auth nest g controller auth --no-spec nest g service auth --no-spec ✅ User Entity & Repository 구현 및 등록 📝 ./src/auth/user.entity.ts import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() username: string; @Column() password: string; } 📝 ./src/au..
[NestJs] 따라하면서 배우는 NestJs - 5 (레포지토리 구현 및 DB 이용 CRUD)
✅ 레포지토리 의존성 주입 📝 ./src/boards/boards.service.ts import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { BoardRepository } from './board.repository'; @Injectable() export class BoardsService { constructor( @InjectRepository(BoardRepository) private boardRepository: BoardRepository, ) {} } 컨트롤러에 서비스를 주입한 것 처럼 서비스에 레포지토리를 주입해준다 여기서는 역시 생성자 주입 사용 데코레..