일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카프카
- JPA예제
- 자료구조공부
- Axon framework
- 플러터 개발
- 플러터 공부
- 알고리즘공부
- 자바공부
- querydsl
- 프로그래머스
- Kafka
- 코테준비
- 스프링
- nestjs스터디
- 스프링부트공부
- 코테공부
- 기술면접공부
- DDD
- 기술공부
- nestjs
- JPA스터디
- 스프링부트
- JPA공부
- Flutter
- 스프링 공부
- JPA 공부
- K8S
- 스프링공부
- JPA
- nestjs공부
- Today
- Total
목록분류 전체보기 (715)
DevBoi
Java stream을 쓰다보면, Map을 많이 쓴다. 가령 이런.. 상황에서 말이다. dtos.stream().map(x -> x.getAddress()).collect(Collectors.toList()); 근데 어떤 상황에서 해당 방식으로 구현이 되어있었다. List dtos = List.of(new MemberDto("name1","id1","add1"),new MemberDto("name2","id2","ad2"),new MemberDto()); List result = new ArrayList(); for(MemberDto memberDto : dtos){ result.add(memberDto.getId()); result.add(memberDto.getName()); } 레거시 코드에서는 이..
오늘은 AuthGuard를 이용하여, 해당 가드를 적용할건데 각기 다른 정책으로 관리가 되게 개발을 할 것이다. 쉽게 얘기하면, 한개는 일반 사용자인지, 즉 auth bearer token으로 요청을 하는지 또 한개는 해당 사용자이지만, 사업가의 authCode인지를 체크하는 것이다. 적용한 코드를 참고 바란다. 1.패키지 구조 2.auth-guard.ts import { ExecutionContext, Injectable } from "@nestjs/common"; import { AuthGuard as NestAuthGuard } from "@nestjs/passport"; import { Observable } from "rxjs"; @Injectable() export class JwtAuthGu..
한글로 데이터를 넣게되면 마리아디비에서 해당과 같이 인코딩 문제가 발생한다. QueryFailedError: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xE3\x85\x85\xE3\x84\xB7...' for column `leeds`.`campaign`.`name` at row 1 at QueryFailedError.TypeORMError [as constructor] (/Users/ysj/leeds_profile_nest/src/error/TypeORMError.ts:7:9) at new QueryFailedError (/Users/ysj/leeds_profile_nest/src/error/QueryFailedError.ts:9:9)..
엔티티간의 다대다 관계인 경우, 해당 매핑 테이블을 생성하는 것이 좋은데 매핑 테이블을 엔티티로 선언하는 것보다, 해당 역할을 하는 엔티티를 생성하는 것이 좋다. 1) 매핑 엔티티 import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, JoinColumn, OneToOne, ManyToOne } from 'typeorm'; import { Member } from 'src/member/entities/member.entity'; import { Campaign } from 'src/campaign/entities/campaign.entity'; import { CampaignMemberResDto } from..
의존성 추가 npm install --save bcrypt @types/bcrypt 메소드 구현 (암호화 모듈) async transformPassword(member: MemberReqDto): Promise { member.password = await bcrypt.hash( member.password, 10, ); return Promise.resolve(); } 컨트롤러 소스 async registerUser(memberReqDto: MemberReqDto): Promise { await this.transformPassword(memberReqDto); console.log(memberReqDto); return null; } 해당 transformPassword를 통해 해당 암호화를 리턴받을..
nestjs의 고유기능 pipeline에 대해서 살펴보자 아래와 같이 동작한다. 0.모듈 설치 npm install class-validator class-transformer --save 1. sample code import { ArgumentMetadata, PipeTransform } from "@nestjs/common"; export class AuthValidationPipe implements PipeTransform{ transform(value: any, metadata: ArgumentMetadata) { console.log(value); console.log(metadata); return value; } } 2.특정 컨트롤러에서 만 해당 파이프라인이 적용되게 하기 2-1. 파라미..
간단하게, findOne했을때 로딩 타입을 eager,lazy중 선택하는 것이다. eager로 하게 되면, 관련된 엔티티를 조회할때, 해당 로딩타입에 따라서 한번에 가져올지 나중에 사용할때 가져올지를 선택한다. 무튼, eager타입에 대해서 별도 지정하는 것은 아래와 같다. 해당 lazy로 하고싶으면 lazy 트루로 하면된다. @JoinColumn({ referencedColumnName: 'id' }) @ManyToOne(() => Corp, (corp) => corp.foods,{onDelete: 'CASCADE',eager: true}) corp : Corp; //업체 매핑
스웨거 관련 세팅하는 방법이다. 아래 세가지만 하면, 대충 api 에 대한 스펙 정보는 전달할 수 있다. 더 심화적이고 복잡하게 필요할떄는 구글링을 하면되고, 아래는 기초적인 내용, 보편적으로 90% 커버가능한 것들을 모아 놓는다. 1. 스웨거 관련 디펜던시 추가(pacakage.json에 추가) "@nestjs/swagger": "^6.3.0", "swagger-ui-express": "^4.6.3", 귀찮으면, npm 으로 @nestjs/swagger 추가하면된다. 2. main.ts swagger 진입 정보 및 세팅(main.ts 에 추가 하면된다.) const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup('ap..
여러개의 연관관계가 매핑되어 있는경우, 예를 들어, 1:N관계로 설정이 되어있을때 부모 데이터를 삭제하면 삭제가 되지않는다. 이유는 하위 데이터가 있는 경우, 외래키 제약 조건이 걸려있어서 하위데이터를 삭제 해야만 삭제를 할수 있도록 데이터 베이스 단에서 막아버리는 것이다. 이름이...외래키 제약조건인가..무튼 그래서 jpa에서도 cascade(고아객체)에 대한 전파를 줄수 있다. 이를 nestjs 적용하면 아래와 같다. @JoinColumn() @ManyToOne(() => Corp, (corp) => corp.foods,{onDelete: 'CASCADE'}) corp : Corp; //업체 매핑 @OneToMany(() => FoodImage, (foodImage) => foodImage.food,..
저번 포스팅에서 다뤘던, S3 이미지 업로드 모듈에 대한 마무리를 지으려고한다. 우선, 개발내용은 아래와 같다. 1. 음식에 대한 정보를 올릴 수 있음 2.음식에 대한 정보가 생성되면, 음식에 대한 id 값이 생성됨. 3.음식에 대한 id값 기준으로, 해당 음식에 대한 사진정보를 담아서 저장함 4.음식사진에 대한 업로드 모듈을 제작함 일단 음식사진에 대한 정보를 올리는 모듈이다. @ApiOperation({ summary: '음식사진 정보 생성' }) @ApiParam({ description: '음식사진 정보 생성', type: [FoodImageReqDto], name: 'foodImageInfos' }) @Post(':id') async postFoodImageInfo(@Body('foodImage..