본문 바로가기

분류 전체보기301

이미지 파일 업로드 심화 - 선업로드 파일을 업로드할때 파일의 크기에 따라 처리시간이 오래걸릴 수 있다. 요즘 시대가 어떤 시대인가? 8282 대한민국 사람이라면 불편할 수 있다. 그래서 고안된 방법이, 파일을 선업로드하는 것이다. 사용자가 업로드 버튼을 누르기 전 단계, 즉 사용자가 파일을 선택한 순간 업로드를 시키는 것이다. 물론 장단점은 있다. 사용자가 선택했지만 업로드하지 않았을때와 같은 경우... 리소스 낭비가 될 수 있다. [1] 선업로드: temp 폴더에 임시로 이미지 파일을 저장위 코드는 이전 게시글에 있는 코드를 그대로 가져왔다. 이 부분이 바로 선업로드로 사용될 부분. MulterModule 에 register 메서드의 인자중 storage 가 바로 사용자가 이미지를 최종 업로드하기 전 바로 선택한 단계이고, 이 단계에서 .. 2024. 6. 25.
이미지 파일 업로드 핵심@nestjs/common : UseInterceptor, UplodedFile@nestjs/platform-express : FileInterceptor, MulterModulemulteruuidpath : extname, joinclass-transformer : Transformfs : promises 핵심은 위에 밑줄 친 메서드와 모듈.포스트맨에서 테스트할때 body 부분을 form-data 형식으로 보내야 한다. 그리고 당연히 Text 가 아닌 File 로... 파일을 저장할때 유니크한 파일명으로 저장해야하는데, 보통 Date 객체를 포함시킨 래덤 문자열을 사용하는데여기서는 uuid() 메서드로 대체한다. 모듈 import { BadRequestException, Module } from '.. 2024. 6. 25.
RxJS 에서 피해야 할 코드 1. 수동으로 옵저버블 구독하기 → 직접 프로퍼티에 바인딩하고 async 파이프로 자동으로 구독과 취소하기 @Component({ template: `{{name}}`})export class MyComponent { name = ''; ngOnInit(){ this.http.get('name').subscribe(result => { this.name = result; }) }} 위와 같이 ngOnInit 에서 HTTP 요청을 하고 응답 받은 값을 MyComponent 의 name 프로퍼티에 할당하는 방식으로 그동안 작성해왔다. 아래 코드를 보면... @Component({ template: `{{name$ | async}}`})export cl.. 2024. 6. 21.
NestJS에서 validation 관련 설정 방법 (class-validator & class-transformer) 1. Pipe- controller 에서 사용.- NestJS 에서 Pipe 는 먼저 transform 하고 validate 한다.  에러메시지는 "validation failed". @Controller('posts')export class PostsController { constructor(private readonly postsService: PostsService) {} @Get(':id') getPost( @Param('id', ParseIntPipe) id: number ){ return this.postService.getPost(); }} 2. class-validator- Entity 또는 DTO 에서 사용- IsNumber, IsString, IsE.. 2024. 6. 18.
자바스크립트 배열 관련 API 와 예제들 배열에 대해 잘 몰랐던 부분: 1. 배열에 프로퍼티를 만들 수 있다. const arr = [];// 배열에 요소(element) 추가arr[0] = 1;arr['1'] = 2;// 프로퍼티 추가 (배열도 객체에 속하기 때문에 아래와 같이 프로퍼티를 추가할 수 있다.)arr['foo'] = 3;arr.bar = 4;arr[1.1] = 5;arr[-1] = 6;console.log(arr) // [1, 2, foo: 3, bar: 4, 1.1: 5, -1: 6], 배열의 length 는 2 이다.  2. 배열에서 delete 연산자를 사용할 수 있다. const arr = [1, 2, 3];delete arr[1];console.log(arr) // [1, empty, 3], 배열의 length 는 3이다.. 2024. 6. 10.
Table inheritance - A 를 B와 C가, B와 C가 A에게 import { ChildEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, TableInheritance, UpdateDateColumn } from "typeorm";export class BaseModel { @PrimaryGeneratedColumn() id: number; @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date;}// 다른 모델로 부터 상속을 받아 각자 테이블로 생성@Entity()export class BookModel extends BaseModel { @Column() name: string;.. 2024. 6. 7.