본문 바로가기

nodejs/nestjs

(6)
@nestjs-modules/ioredis로 redis queue 사용하기 redis in nestjs 로 검색하면 많은 정보가 나오는데 거의다 cache로 사용하는 예제이다. 그런데 최근에 nestjs팀에서 ioredis 전용 라이브러리를 업데이트 해주셨다. 덕분에 아주 간단하게 연결해서 사용할수 있었다. 짧게 연결 법부터 적용 방법을 기록한다 ! 라이브러리 설치 $ yarn add @nestjs-modules/ioredis ioredis 연결하기 import { RedisModule } from '@nestjs-modules/ioredis'; @Module({ imports: [ RedisModule.forRoot({ config: { url: `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`, password: ..
jwt role guard 적용기 ✨ jwt + role guard 를 적용해 보자 ! jwt 인증과 payload 에 심어진 role로 guard 를 적용하자 (예시를 위하여 jwt access token은 post 요청시 body에 id 와 role 을 전달하면 받을수 있게 함 !) install yarn add @nestjs/config @nestjs/jwt @nestjs/passport passport passport-jwt 공통 적으로 사용하는 값들 export enum Role { role1 = 'role1', role2 = 'role2', } export class AuthDto { @ApiProperty() @IsString() id: string; @ApiProperty() @IsEnum(Ro..
eslint-plugin-import in nestjs install $ yarn add eslint-plugin-import .eslintrc.js plugins : [import], extends : ['plugin:import/recommended'], rules : { 'import/order': ['error', { alphabetize: { order: 'asc' }, groups: [ ['builtin', 'external','internal'], ], pathGroups: [ { pattern: '@*/**', group: 'external', position: 'before', }, { pattern: '#*/**', group: 'internal', position: 'after'} ], 'newlines-between': 'always' ..
ip filter middleware 🎇middleware 작성 @Injectable() export class IpFilterMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) { let allowIps: string[] = []; if (process.env.NODE_ENV == 'local') { allowIps = ['127.0.0.1']; } if (!allowIps.includes(req.ip.toString())) { throw new UnauthorizedException('invalid ip'); } next(); } } 🎇 middleware 주입 # app.module.ts ... export class App..
custom repository 🎇 repository import { EntityRepository, Repository } from 'typeorm'; import { User } from '@entity/user.entity'; @EntityRepository(User) export class UserRepository extends Repository {} 🎇 service @Injectable() export default class UserService { constructor( private userRepository: UserRepository ) {} ... 🎇 module 서비스단과 컨트롤러단에서 repository를 사용할 수 있게, module 단에서 호출하는 repository를 import 시켜줘야 한다 ! @..
dto에서 type 변환 적용하기 http로 넘어오는 값들은 모두 string로 넘어오기 때문에 body값에 매핑 되어있는 dto중 number 값이 있다면 validate error 가 발생할 수 있다. class-transformer 모듈의 type를 사용하면 controller 단에서 다른 처리를 해주지 않고 dto단에서 타입을 변환시킬 수 있다. import { Type } from 'class-transformer'; export class User { @IsNumber() @Type(() => Number) readonly age: number; } 🎈 https://github.com/nestjs/nest/issues/1331