본문 바로가기

nodejs

(12)
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
typeorm multiple database ormconfig.json 파일로 다중 디비 설정을 하자 ! 📢 ormconfig.json 파일 작성 [ { "name": "default", // 반드시 하나의 db name 이 default 여야 한다!!! "type": "postgres", "host" : "127.0.0.1", "post" : 5432, "username" : "username", "password" : "password", "database" : "db_01", "entities": [ "dist/**/*.entity.js" ] }, { "name": "db_02", "type": "postgres", "host" : "127.0.0.1", "post" : 5432, "username" : "username", "password..