본문 바로가기

Develop/[NestJs]

(31)
[NestJs] TypeORM entity cascade 설정 여러개의 연관관계가 매핑되어 있는경우, 예를 들어, 1:N관계로 설정이 되어있을때 부모 데이터를 삭제하면 삭제가 되지않는다. 이유는 하위 데이터가 있는 경우, 외래키 제약 조건이 걸려있어서 하위데이터를 삭제 해야만 삭제를 할수 있도록 데이터 베이스 단에서 막아버리는 것이다. 이름이...외래키 제약조건인가..무튼 그래서 jpa에서도 cascade(고아객체)에 대한 전파를 줄수 있다. 이를 nestjs 적용하면 아래와 같다. @JoinColumn() @ManyToOne(() => Corp, (corp) => corp.foods,{onDelete: 'CASCADE'}) corp : Corp; //업체 매핑 @OneToMany(() => FoodImage, (foodImage) => foodImage.food,..
[NestJS] S3이미지 업로드 모듈 제작 저번 포스팅에서 다뤘던, S3 이미지 업로드 모듈에 대한 마무리를 지으려고한다. 우선, 개발내용은 아래와 같다. 1. 음식에 대한 정보를 올릴 수 있음 2.음식에 대한 정보가 생성되면, 음식에 대한 id 값이 생성됨. 3.음식에 대한 id값 기준으로, 해당 음식에 대한 사진정보를 담아서 저장함 4.음식사진에 대한 업로드 모듈을 제작함 일단 음식사진에 대한 정보를 올리는 모듈이다. @ApiOperation({ summary: '음식사진 정보 생성' }) @ApiParam({ description: '음식사진 정보 생성', type: [FoodImageReqDto], name: 'foodImageInfos' }) @Post(':id') async postFoodImageInfo(@Body('foodImage..
[NestJs] S3업로드 모듈 생성 1. 업로드 사용 모듈 생성 nest g mo uploads nest g co uploads nest g s uploads 2.디펜던시 추가 Express module multer 추가 npm i -g @types/multer 3. aws-sdk 및 multer-s3 추가. npm i -D aws-sdk --force npm i -D multer-s3 --force 4. aws s3 설정과 iam으로 사용자를 생성해서 토큰값을 넣어준다. 아래 사이트 참고해서 설정을 진행하자. https://soraji.github.io/back/2023/02/14/awsS3/ [ AWS ] AWS S3 버킷에 NestJS로 이미지 업로드하기 1편. AWS S3 버킷만들고 기본세팅하기 soraji.github.io 5. ..
[NestJs] 다대일 매핑 다대일 매핑은 한개의 객체와 여러개의 객체의 연관관계를 나타낸 객체 매핑이다. 쉽게 얘기하면 아래와 같다. 만약에 어떤 업체가 음식들을 등록한다고 가정했을떄, 해당 업체:푸드 는 1:N이다. 엔티티에서는 아래와 같이 정의가 가능하다. @JoinColumn() @ManyToOne(() => Corp, (corp) => corp.foods) corp : Corp; //업체 매핑 업체는 프라이머리키를 표현해서 아래와 같이 또 표현 가능하다. @OneToMany(() => Food, (food) => food.corp) foods: Food[] 그러면 이때 CRUD로직은 어떻게 변하는지 확인해보자 우선 해당 관련 controller ~ repoistory를 작성할 것이다. 완벽한 설계다 라는 확신은 없는데, 우..
[NestJs] Api 좀 더 Restful 하게 변경 거지같던 레거시..가 아니고 내 코드를 좀더 바꿨다. (controller) import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Put, NotFoundException } from '@nestjs/common'; import { CorpService } from './corp.service'; import { JwtAuthGuard } from 'src/auth/auth-guard'; import { Corp } from './entities/corp.entity'; import { ApiTags, ApiOperation, ApiResponse, ApiQuery, ApiParam, ApiBody } from '@nestjs/sw..
[NestJs] 수정, 삭제 저번에는 생성을 하는 API를 간단하게 개발했는데, 이제는 수정 및 삭제에 대한 API를 생성해보자 뭐 생성만 하면 사실 수정은 껌이다. 서비스는 기존 생성과 동일하다. 바뀐 부분이라면 dto,entity 가 변경됬다. (컨트롤러) @Put('') putCorp(@Body('corp') corpReqDto :CorpReqDto){ return this.corpService.saveCorp(corpReqDto); } (Dto) import { IsNotEmpty } from "class-validator"; import { Corp } from "./entities/corp.entity"; import { ClassSerializerInterceptor } from "@nestjs/common"; impo..
[NestJs] Post , 생성 간단한데, 이것저것 삽질을 많이한것같다. 무튼 스프링에서 넘어가는 개발자들을 위해서 도움이 될까 한다. class-transform, class-validator, auto-mapper,Interceptor등을 살펴봤지만, 뭔가 간단하게 dto entity를 변환하는데 불필요한 기능? 좀, 의도와 다른 기능들이 보였다. 그래서 이건 나중에 적용하도록 하려고한다.(class-validator는 dto validation에 많은 도움을 줄것같다) 무튼, 시작 entity에 메소드를 추가했다(이건 jpa소스 작성 습관 같다) import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; import { CorpReqDto } from '../corp.re..
[NestJS] Repository Pattern 단순히 nestJS 관련 API를 개발했다. 스웨거를 붙였고, 해당 관련되서, 단순히 조회해서, 리턴하는 (DTO) 로직을 구현했다. typeorm 0.3버전 부터 좀 많이 바뀌어서, 버전은 0.2.45로 변경해서 작업을 했다. 1) 컨트롤러 import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common'; import { CorpService } from './corp.service'; import { JwtAuthGuard } from 'src/auth/auth-guard'; import { Corp } from './entities/corp.entity'; import { ApiTags, ApiO..