일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- 알고리즘공부
- K8S
- JPA예제
- JPA스터디
- nestjs
- querydsl
- 카프카
- JPA
- 스프링 공부
- nestjs공부
- 코테공부
- 플러터 공부
- 기술공부
- 자료구조공부
- DDD
- Flutter
- JPA공부
- 플러터 개발
- 자바공부
- JPA 공부
- 스프링공부
- Kafka
- 프로그래머스
- 기술면접공부
- 코테준비
- 스프링부트
- nestjs스터디
- 스프링부트공부
- Axon framework
- Today
- Total
목록Develop/[NestJs] (31)
DevBoi
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. ..
다대일 매핑은 한개의 객체와 여러개의 객체의 연관관계를 나타낸 객체 매핑이다. 쉽게 얘기하면 아래와 같다. 만약에 어떤 업체가 음식들을 등록한다고 가정했을떄, 해당 업체:푸드 는 1:N이다. 엔티티에서는 아래와 같이 정의가 가능하다. @JoinColumn() @ManyToOne(() => Corp, (corp) => corp.foods) corp : Corp; //업체 매핑 업체는 프라이머리키를 표현해서 아래와 같이 또 표현 가능하다. @OneToMany(() => Food, (food) => food.corp) foods: Food[] 그러면 이때 CRUD로직은 어떻게 변하는지 확인해보자 우선 해당 관련 controller ~ repoistory를 작성할 것이다. 완벽한 설계다 라는 확신은 없는데, 우..
거지같던 레거시..가 아니고 내 코드를 좀더 바꿨다. (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..
저번에는 생성을 하는 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..
간단한데, 이것저것 삽질을 많이한것같다. 무튼 스프링에서 넘어가는 개발자들을 위해서 도움이 될까 한다. 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 관련 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..
Guard는 허용된 유저가 아니면, 요청 자체를 막아버리는 것이다. 서버의 리소스를 허용된 유저가 아니면 사용할 수 없도록 하는 것이고, 서버의 자원 낭비를 막을수 있게 된다. decorator 문법을 사용하고, ts에서 실험기능에 포험되어있다고한다. 일단 가이드로 통용되고있는 구현체를 구현해보자 Guard의 기본로직은 아래와 같다. 1. 회원가입 2. 사용자 정보와 대응하는 jwt생성 3. 사용자가 서버에 요청을 보낼때 Header에 jwt를 담아서 보낸다. 4. Guard에서 확인 5. 유효한 값이면 통과, 아니면 에러를 일으킨다. 1. Authorization guard 사용자 인증은 가드의 대표적인 예시이다. AuthGuard는 사용자의 헤더에 특정 토근이 제대로 들어있는지를 확인하는 것이다. G..
우선 게시물에 대한 Entity를 아래와 같이 바꿨다. import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn, } from 'typeorm'; import { Record } from './record.entity'; @Entity() export class Board extends BaseEntity { @PrimaryGeneratedColumn() uid: number; @Column() title: string; @Column({ unique: true }) userId: string; @Column() nickname: string; @Column() password: string; } board.repository.ts i..
일단 가볍게 이미지를 받아준다. docker pull mariadb 그리고, 포트랑 이름, 볼륨 마운트 정보를 넘겨서 커맨드를 입력한다. 사용자,포트,데이터베이스를 한번에 생성한다. docker run -d --name mydb -p 3306:3306 --env=MYSQL_ROOT_PASSWORD=1234 --env=MYSQL_USER=admin --env=MYSQL_PASSWORD=admin --env=MYSQL_DATABASE=test mariadb 도커 프로세스를 확인한다. 끝 이제 NestJS쪽에서 디비 연동 및 세팅을 진행해보자. 일단. TypeOrm을 사용하기 위해서, 관련 라이브러리를 설치해줘야 한다. npm install --save @nestjs/typeorm typeorm mysql2 ..
자바랑 살짝 비슷하게 생겼는데 커스텀 파이프는 PipeTranform을 구현해야 하고, 하위 transform()메소드를 구현해야한다 import { ArgumentMetadata, PipeTransform } from "@nestjs/common"; export class BoardStatusValidationPipe implements PipeTransform { transform(value: any, metadata: ArgumentMetadata) { console.log(value) console.log(metadata) return value; } } @Patch('/:id/status') updateBoardStatus( @Body('status',BoardStatusValidationPip..