inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

/actuator/refresh 가 동작하지 않습니다.

미해결

Java 마이크로서비스(MSA) 프로젝트 실습

안녕하세요~ 강의를 듣다가 제가 뭔가 잘못한건지 actuator에 refresh가 동작하지 않아 질문글을 남깁니다. 강의 2-10번 DB 비밀번호 암호화까지 문제 없이 잘 진행하다 재가동 없이 설정파일 갱신하는 부분을 진행하는데 item-service에서 build.gradle에 의존성 추가하고 bootstrap.yml에 설정 옵션 추가했는데 config-server 설정 파일 변경 후 postman 에서 refresh 요청을 날려도 response body 에는 [] 빈 배열만 찍히고 별다른 문구가 없고 변경된 설정이 적용되지 않더라고요 강의를 봐도 크게 설정하는 부분이 많은건 아니어서 잘 적용된 것 같은데 작동하지 않는 원인이 콘솔에 찍히지 않아서 헤메고 있습니다. build.gradle 의존성과 bootstrap.yml 에 설정 추가하고 config-server 실행시키고 item-service 실행시킨 후 설정 파일에 변경점을 주고 localhost:5000 번으로 /actuator/refresh 요청을 날렸습니다. 그리고 물품등록 요청을 보내서 200코드 성공했는데 별도의 logs 폴더에 api-local2.log는 생기지 않았습니다. 강의와 다르게 한건 인텔리제이로 프로젝트 구성한 것과 스프링부트 마이너 버전만 달라서 크게 문제가 있지는 않을 것 같은데.. 2-10 강의까지 해본 깃 주소도 올려봅니다. https://github.com/doyoun8813/Microservice

  • java
  • spring
  • rest-api
  • spring-boot
  • msa
권도윤 댓글 3 좋아요 2 조회수 737

노션 링크가 어디있나요 ?

미해결

비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지

노션 링크가 어디있나요 ? 찾기가 어렵네요..

  • HTML/CSS
  • javascript
  • aws
  • git
  • mysql
  • rest-api
  • github
hihi 댓글 1 좋아요 1 조회수 333

반복문 리팩토링 질문드립니다.

해결됨

김영한의 실전 자바 - 기본편

안녕하세요 영한님! 질문은 처음 드리는거 같습니다~ 기본형과 참조형 '문제와 풀이' 시간에 ProductOrder를 리팩토링하는 부분에서 질문이 있습니다. 리팩토링 하는 과정에서 for문 안에서 수행하던 print와 totalAmount를 계산하는 로직을 각각 메서드로 나누었는데요, 이렇게 되면 한번만 수행되던 반복문이 메서드로 나누면서 각각 수행되어 2번이 되는데 이런 부분은 for문이 한번 더 돌게되어 오는 성능이슈보다, 깔끔하게 리팩토링 되는 부분이 더 이점이 큰 부분일까요? 사실 현업에서 업무를 할때도, for안에서 여러가지 로직이 수행되면 한번에 파악하기가 어려워서 나눠야지 싶어서 나누었지만, 한번만 돌던 반복문이 여러번 돌게 될 수 있어서 망설여지는 부분이 있었습니다. 이 부분 질문드립니다! 감사합니다~

  • java
  • 객체지향
  • 리팩토링
suco 댓글 1 좋아요 1 조회수 528

혼자서 푼 문제 확인 부탁드립니다.

미해결

자바 코딩테스트 - it 대기업 유제

import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; class 방향바꾸기 { public int solution(int[][] board) { int answer = 0; /** * n * m 격자판 지도정보 * 격자판에는 각 1,2,3,4 의 값이 존재 * 1: 오른쪽의 인접한 격자로 이동 * 2. 왼쪽의 인접한 격자로 이동 * 3: 아래로 이동 * 4: 위로 이동 * 0,0부터 오른쪽 아래 맨 끝으로 이동하려고함 * board가 주어지면 목표지점까지 가기위해 방향을 바꾸는 최소 격자 개수 * 한 격자의 방향은 원하는 방향으로 한번만 바꾸기 가능 * * * */ //다익스트라로 인접 순회 할때마다 내가 그 격자를 바라보고있는지 확인 //내가 그 격자를 바라보고있으면 1추가 안함 , 바라보지 않으면 1 추가 int[] dx = {-1, 0, 1, 0}; int[] dy = {0, -1, 0, 1}; PriorityQueue<Candidate> queue = new PriorityQueue(); Map<String, Integer> minPosMap = new HashMap<>(); for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { minPosMap.put(j + ":" + i, Integer.MAX_VALUE); } } Pos first = new Pos(0, 0); //첫번째 시작을 넣는다. queue.add(new Candidate(first, 0)); while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { Candidate candidate = queue.poll(); Pos pos = candidate.pos; if (pos.x == board[0].length - 1 && pos.y == board.length - 1) { // print(board, minPosMap); return candidate.cnt; } for (int j = 0; j < 4; j++) { int moveX = dx[j] + pos.x; int moveY = dy[j] + pos.y; if (moveX < 0 || moveY < 0 || moveX >= board[0].length || moveY >= board.length) continue; //현재 Pos 가 moveX, moveY 를 바라보고 있는지 체크 boolean isLookAt = isLookAt(board[pos.y][pos.x], pos, moveX, moveY); //바라보면 cnt 그대로 바라보지 않으면 cnt++ //내가 추가할 값이 기존에 있는 값보다 작아야함 Pos newPos = new Pos(moveX, moveY); int cnt; if (isLookAt) { cnt = candidate.cnt; } else { cnt = candidate.cnt + 1; } Integer baseCnt = minPosMap.get(newPos.getName()); if (cnt < baseCnt) { minPosMap.put(newPos.getName(), cnt); Candidate newCandi = new Candidate(newPos, cnt); queue.add(newCandi); } } } } return answer; } private static void print(int[][] board, Map<String, Integer> minPosMap) { int cnt = 0; for (Integer value : minPosMap.values()) { System.out.print(value + " "); cnt++; if (cnt % board[0].length == 0) System.out.println(); } } private boolean isLookAt(int direction, Pos pos, int moveX, int moveY) { int x = pos.x; int y = pos.y; // * 1: 오른쪽의 인접한 격자로 이동 // * 2. 왼쪽의 인접한 격자로 이동 // * 3: 아래로 이동 // * 4: 위로 이동 int[][] directionCalculate = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; return y + directionCalculate[direction - 1][0] == moveY && x + directionCalculate[direction - 1][1] == moveX; } class Pos { int x; int y; public Pos(int x, int y) { this.x = x; this.y = y; } public String getName() { return x + ":" + y; } } class Candidate implements Comparable<Candidate> { Pos pos; int cnt; public Candidate(Pos pos, int cnt) { this.pos = pos; this.cnt = cnt; } @Override public int compareTo(Candidate o) { return cnt - o.cnt; } } public static void main(String[] args) { 방향바꾸기 T = new 방향바꾸기(); System.out.println(T.solution(new int[][]{{3, 1, 3}, {1, 4, 2}, {4, 2, 3}})); System.out.println(T.solution(new int[][]{{3, 2, 1, 3}, {1, 1, 4, 2}, {3, 4, 2, 1}, {1, 2, 2, 4}})); System.out.println(T.solution(new int[][]{{3, 2, 1, 3, 1, 2}, {2, 1, 1, 1, 4, 2}, {2, 2, 2, 1, 2, 2}, {1, 3, 3, 4, 4, 4}, {1, 2, 2, 3, 3, 4}})); System.out.println(T.solution(new int[][]{{3, 2, 1, 3, 1, 2, 2, 2}, {2, 1, 1, 1, 4, 2, 1, 1}, {2, 2, 2, 1, 2, 2, 3, 4}, {1, 3, 3, 4, 4, 4, 3, 1}, {1, 2, 2, 3, 3, 4, 3, 4}, {1, 2, 2, 3, 3, 1, 1, 1}})); System.out.println(T.solution(new int[][]{{1, 2, 3, 2, 1, 3, 1, 2, 2, 2}, {1, 2, 2, 1, 1, 1, 4, 2, 1, 1}, {3, 2, 2, 2, 2, 1, 2, 2, 3, 4}, {3, 3, 1, 3, 3, 4, 4, 4, 3, 1}, {1, 1, 1, 2, 2, 3, 3, 4, 3, 4}, {1, 1, 1, 2, 2, 3, 3, 1, 1, 1}})); } } AI로 답변을 달아주시는 것 같은데 이번에도 확인 부탁드립니다. 해설을 보면 강사님이랑 풀이방식은 비슷한것같습니다.

  • java
  • 코딩-테스트
이승환 댓글 1 좋아요 0 조회수 188

완강이 안됩니다.

미해결

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

모든 강의를 완료하였으나 98.11%에서 올라가지 않습니다. 그래서 수료증을 받을 수 없습니다.

  • rest-api
  • spring-boot
라벤더7 댓글 1 좋아요 0 조회수 247

다중 로그인을 막고 싶다면 추가로 어떻게 구현하는 것이 좋을까요?

해결됨

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요! 현재 구현된 로직 상에서는 연속으로 여러번 로그인 리퀘스트를 보내더라도 모든 accessToken으로 인증을 통과하는게 가능하던데 다중 로그인을 막고 싶은 경우 어떠한 점을 고려하면 좋을 지 강사님께서 추천하시는 방법이 있을까요?

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
jhreplay.lee 댓글 1 좋아요 0 조회수 327

매서드 캡슐화와 테스트 코드

해결됨

김영한의 실전 자바 - 기본편

선생님, 안녕하세요. 내부에서만 사용하는 매서드는 private으로 캡슐화 해두는 것이 좋은 구현이라고 알고 있고, 이번 수업에서도 그런 내용을 확인할 수 있었는데요, private 매서드들도 테스트 코드를 작성해서 테스트 해보고싶은 경우가 자주 발생합니다... 이런 경우 고민을 하다가 몇 가지 방법이 있겠으나 ... 그냥 public 으로 열어버리고 테스트 코드를 두곤 했는데요, 이런 경우에 선생님은 실무에서 어떻게 하셨는지, 가장 좋은 practice가 무엇인지 알고 싶습니다. 항상 감사합니다..^^

  • java
  • 객체지향
Summer Kim 댓글 1 좋아요 3 조회수 558

[hibernate 6] custom 함수 등록 방법 공유

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

Hibernate 6에서는 강의에서 처럼 Dialect를 통한 함수 등록이 불가능합니다. https://start.spring.io/ 로 Spring Boot 3버전으로 만드신 분들은 문제를 겪으실 거라고 생각합니다. 등록법 FunctionContributer 의 구현체를 만들어 준다. package custom; import org.hibernate.boot.model.FunctionContributions; import org.hibernate.boot.model.FunctionContributor; import org.hibernate.dialect.function.StandardSQLFunction; import org.hibernate.type.StandardBasicTypes; public class CustomFunctionContributor implements FunctionContributor { @Override public void contributeFunctions(FunctionContributions functionContributions) { functionContributions.getFunctionRegistry() .register("group_concat", new StandardSQLFunction("group_concat", StandardBasicTypes.STRING)); } } src/main/resources/META-INF/services/org.hibernate.boot.model.FunctionContributor 파일을 생성한다. 해당 파일에 직접 구현한 CustomFunctionContributor를 등록한다. 패키지명.컨트리뷰터이름 형태로 등록!! custom.CustomFunctionContributor 이렇게 하시면, 강의에서처럼 group_concat함수를 사용하실 수 있습니다. Dialect는 변경 안하셔도 됩니다. reference https://aregall.tech/hibernate-6-custom-functions

  • java
  • jpa
codingNoob12 댓글 5 좋아요 22 조회수 3553

private static method를 사용하는 이유를 알고 싶습니다.

해결됨

김영한의 실전 자바 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] private static method 를 사용하는 이유를 알고 싶습니다. [질문 배경] 영한님의 다른 강의(스프링 강의로 기억합니다.) 중에 아주 단순한 기능을 private static method를 사용하셔서 만드신 걸 본적이 있었습니다. 왜 private 접근제어자를 사용하셨는데, 인스턴스 메서드가 아닌 static 메서드를 사용하셨을까? 궁금하여 여러 검색과 이리 저리 혼자서 생각도 많이 해보고 나름대로 정리했습니다만 뇌내 망상 수준이라.. 영한님의 답변만큼 확실한건 없을 것 같아 질문드립니다. [검색 등을 통해 제가 정리한 내용] 속도 : 인스턴스 메서드의 경우에는 메서드 영역의 virtual table을 거쳐서 이 인스턴스에 매핑되는 메서드를 조회 후 메서드에 접근해야 하지만, static 메서드의 경우에는 그럴 필요가 없어 인스턴스 메서드에 비해 빠르다. -> 이 부분은 제가 여러 정보를 조합한 내용이라 신빙성이 떨어지고, 과연 속도 측면에서 유의미한 차이가 있을까 의문입니다. 객체지향기반의 커뮤니케이션 : private 접근제어자를 명시하여 캡슐화를 하였으나 static 까지 붙여 이 메서드는 내부에서만 쓸 뿐더러 객체지향적으로 대화할 의도가 없으니 거들떠도 보지 말아라 라는 의미를 담고 있는 것이 아니었을까 추측해봅니다.

  • java
  • 객체지향
  • static
김경민 댓글 1 좋아요 1 조회수 2269

배열

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

배열 안에 자료형이 여러가지 된 숫자, 문자열 , 볼린 값들을 저장이 가능합니까?

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
navruzbek-1998_ 댓글 2 좋아요 0 조회수 201

delete 로직 문의

미해결

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

POST 맨으로 삭제 요청을 하였을 때 로그를 확인해 보니 삭제 요청 아이디로 select를 한번 날리고 아이디가 존재시에만 delete 로직이 수행되는데 이는 jpa 내부 프로세스 자체 로직 인가요?

  • rest-api
  • spring-boot
hibnos 댓글 1 좋아요 0 조회수 338

노션 링크 어디에 있나요?

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

아무리 찾아봐도 링크 주소를 찾지 못해서 링크 주소 올려주시면 감사드립니다.

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
corp.starcoex 댓글 1 좋아요 0 조회수 269

query 없이 mutation 만작성하면 오류가 난다?

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요~ 복습중 이상한 현상이 발생하여 질문드립니다~ 답변 주시면 감사하겠습니다~ 질문1.resolver 부분에서 boards() 부분의 주석 부분을 해제해야, 맨아래 3번 오류가 발생하지 않고, 정상 작동 합니다. Query 없이 Mutation 만작성하면 오류가 발생하는걸까요? 아래 코드와 같이 query 부분을 주석 처리 하면 왜 오류가 나는 걸까요? 질문2. 에러가 내가 작성한 파일의 어떤부분이 잘못됐다고, 알려주는건 없는 걸까요? 아래 에러 코드를 보면 내가 작성한 코드가 아닌 작성하지도 않은 설치 파일같은데서 error 정보가 나오는데, 저기를 열어봐야 할까요? GraphQLError: Query root type must be provided. at SchemaValidationContext.reportError (C:\study\00-codecamp-backend\연습장\memo01\node_modules\graphql\type\validate.js:73:7) 1.resolver import { Args, Mutation, Resolver } from '@nestjs/graphql'; import { BoardsService } from './boards.service'; import { CreateBoardInput } from './dto/create-board.input'; import { Board } from './entities/board.entity'; @Resolver() export class BoardsResolver { constructor(private readonly boardsService: BoardsService) {} // @Query(() => String) // boards(): string { // return this.boardsService.boards(); // } @Mutation(() => Board) createBoard( @Args('createBoardInput') createBoardInput: CreateBoardInput, // ): Promise<Board> { return this.boardsService.create({ createBoardInput }); } } 2.service import { Injectable } from '@nestjs/common'; import { Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; import { IBoardsServiceCreate } from './interfaces/boards-service.interface'; import { Board } from './entities/board.entity'; @Injectable() export class BoardsService { constructor( @InjectRepository(Board) private readonly boardsRepository: Repository<Board>, // ) {} // boards() { // return 'boards'; // } create({ createBoardInput }: IBoardsServiceCreate): Promise<Board> { return this.boardsRepository.save({ ...createBoardInput }); } } 3.error [ GraphQLError: Query root type must be provided. at SchemaValidationContext.reportError (C:\study\00-codecamp-backend\연습장\memo01\node_modules\graphql\type\validate.js:73:7) at validateRootTypes (C:\study\00-codecamp-backend\연습장\memo01\node_modules\graphql\type\validate.js:89:13) at validateSchema (C:\study\00-codecamp-backend\연습장\memo01\node_modules\graphql\type\validate.js:41:3) at graphqlImpl (C:\study\00-codecamp-backend\연습장\memo01\node_modules\graphql\graphql.js:60:63) at C:\study\00-codecamp-backend\연습장\memo01\node_modules\graphql\graphql.js:23:43 at new Promise (<anonymous>) at graphql (C:\study\00-codecamp-backend\연습장\memo01\node_modules\graphql\graphql.js:23:10) at GraphQLSchemaFactory.create (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\schema-builder\graphql-schema.factory.js:50:65) at GraphQLSchemaBuilder.generateSchema (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\graphql-schema.builder.js:35:52) at GraphQLSchemaBuilder.build (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\graphql-schema.builder.js:22:31) { path: undefined, locations: undefined, extensions: [Object: null prototype] {} } ] C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\schema-builder\graphql-schema.factory.js:56 throw new schema_generation_error_1.SchemaGenerationError(errors); ^ Error: Schema generation error (code-first approach) at GraphQLSchemaFactory.create (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\schema-builder\graphql-schema.factory.js:56:23) at processTicksAndRejections (node:internal/process/task_queues:96:5) at GraphQLSchemaBuilder.generateSchema (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\graphql-schema.builder.js:35:24) at GraphQLSchemaBuilder.build (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\graphql-schema.builder.js:22:20) at GraphQLFactory.generateSchema (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\graphql.factory.js:27:41) at GraphQLModule.onModuleInit (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\graphql\dist\graphql.module.js:109:27) at callModuleInitHook (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\core\hooks\on-module-init.hook.js:51:9) at NestApplication.callInitHook (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\core\nest-application-context.js:223:13) at NestApplication.init (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\core\nest-application.js:100:9) at NestApplication.listen (C:\study\00-codecamp-backend\연습장\memo01\node_modules\@nestjs\core\nest-application.js:169:33)

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
김주원 댓글 1 좋아요 0 조회수 348

배열에 대한 질문

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

안녕하세요 강사님 배열에 대해서 정말 이해하기 쉽게 알려주셔서 정말 감사드립니다! students[0] = 90; students[1] = 80; students[2] = 70; students[3] = 60; students[4] = 50; 이 선언문을 for문을 활용해서 students[i]가 이전의 값을 계속 참조해서 10씩 증가 즉, students[0] = 60; students[1] = 70; students[2] = 80; students[3] = 90; students[4] = 100; 이렇게 응용한 코드를 작성해보려고 했는데 해당코드가 리펙토링이 잘 된 코드인지 컨펌을 받고 싶습니다.

  • java
  • 객체지향
옙버디 댓글 2 좋아요 0 조회수 477

에러 해결하고 데이터베이스 초기화하기 파트

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 통합 링크 https://links.codefactory.ai 안녕하세요 혹시 원래 만든 postModel 인터페이스에서 export interface PostModel { id: number ; author: string ; title: string ; content: string ; likeCount: number ; commentCount: number ; } 이렇게 author가 string으로 되어있어서 오류가 나오는데 이건 어떻게 처리하나요? The expected type comes from property 'author' which is declared here on type 'DeepPartial<PostModel>' 터미널에서는 이렇게 오류가 나옵니다 타입 관련 오류인데 이게 아래에선 postmodel을 받는데 author을 authorId가 들어간 객체로 받는데 위에선 선언을 string으로 해줬는데 이것도 잘 이해가 안 갑니다.. async createPost(authorId: number , title: string , content: string) { // 1) create -> 저장할 객체를 생성한다. // 2) save -> 객체를 저장한다. (create 메서드에서 생성한 객체로) const post = this.postsRepository.create({ author: { id: authorId , } , title , content , likeCount: 0, commentCount: 0, }) ; const ne wPost = await this.postsR epository.save(post) ; return newPost ; }

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
채 수 댓글 1 좋아요 0 조회수 506

관계형 연결되어있는 DB 모델 삭제 시 에러 처리

해결됨

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요. 강의 잘 듣고 있습니다. image multer 적용 후, 몇가지 api를 테스트 하던중에 아래와 같은 에러가 발생하여, 해결하고자 시도를 해보았는데 잘 해결 되지 않아 질문 드립니다. 에러 메세지 QueryFailedError: update or delete on table "posts_model" violates foreign key constraint "FK_40cd89c6655ec7b102842feacab" on table "image_model" 에러 발생 상황 - image가 post 모델에 관계형이 지어있는 상황에서, post를 지우려고 하면 (deletePost API 사용) 위와 같은 에러 메세지가 나오며 에러가 발생합니다. 에러 해결을 위한 시도 - onDelete : "CASCADE" 옵션을 posts model에 주고, db를 초기화 한후 다시 시도해보았지만 같은 상황이 발생하였습니다. 해당 에러를 어떤식으로 해결해야할지 말씀 부탁드립니다.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
dhj100 댓글 1 좋아요 1 조회수 443

예외처리, 함수 Return type 관련하여 질문 드립니다!

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요! 수업 수강 중 궁금한 부분이 생겨 질문 드립니다! 질문 1) Section 11-01 수업 중 users.service.ts 에서 create 함수를 만들 때 const user = await this.findOneByEmail({ email }); if (user) throw new ConflictException('이미 등록된 이메일입니다.'); 위와 같이 email을 검사하고 이미 이메일이 있으면 예외처리를 해주게 되는데 Entity 구현 시 email에 { unique: true } 를 주어도 위 코드처럼 예외처리를 해주어야 하는건가요? 질문 2) Section 10의 products.service.ts 에서 create 함수를 만들 때 함수의 return type은 Promise<Product> 로 구현을 했는데, const result2 = this.productsRepository.save({ ...product, productSalesLocation: result, productCategory: { id: productCategoryId, // 만약 name 까지 받고 싶으면? // => createProductInput에 name까지 포함해서 받아오기 }, productTags: tags, }); return result2; 이런 식으로 result2 를 return 하게 되면 플레이그라운드에서 return 을 선택할 때 productCategory.name 까지 선택할 수 있게 되어 있더라구요. 주석에 쓰여진 내용처럼 name 을 받고 싶으면 createProductInput 에 name을 포함하면 되지만, 지금 처럼 id만 save할 경우, 프론트 개발자 또는 이 API 사용자에게는 productCategory.name 이 없다고 매 번 설명을 해야하는 번거로움이 있을 것 같은데 이런 경우 함수의 return type을 새로 정의하기도 하나요? ex) class ProductsServiceCreateReturn ...

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
00_3 댓글 2 좋아요 0 조회수 222

11:50초 질문 입니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] @OneToMany 어노테이션 사용시 new ArrayList<>(); 를 관례상 쓰는 이유 외에도 다양한 장점들에 대해 자세히 알 수 있을까요? 감사합니다.

  • java
  • jpa
홋메 댓글 1 좋아요 0 조회수 281

이미지파일 선 업로드 방식에서 update 로직

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

강사님 안녕하세요. 파일 업로드 기능 중 선 업로드 방식에서 update로직을 구현하려고 합니다. 한 개의 포스트에 1,2,3 이미지를 인서트 해당 포스트에 이미지를 2번 삭제하고 4번 추가 하여 업데이트 이럴 경우, 이미지 테이블을 모두 삭제한 후 1,3,4 이미지 파일명을 이미지 테이블에 넣어주면 될까요?1,3 이미지는 public/post 경로에 이미 있고 3이미지는 temp 경로에 있을텐데 public폴더와 temp 폴더를 모두 access 해봐서 temp에 있는 경우만 이미지 파일위치를 옮겨주면 될지 Update를 어떻게 구현하면 좋을지.,문의드립니다. 좋은강의 정말 감사합니다!

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
olivejuice 댓글 1 좋아요 1 조회수 555

[gradle build error] gradle clear build를 할때 모두 자바 17을 사용하고 있음에도 오류가 발생하고 있습니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 다름이 아니고 다음과 같이 gradle은 8.4 버전이고 자바는 17버전을 사용하고 있습니다. 자바 17은 gradle 실행, complie할때 등등 모든 부분해서 11이 아닌 17을 사용하고 있음에도 불구하고 지속적으로 저런 에러가 발생해서 질문드렸습니다. intellij를 껏다 켜보기도 하였구요

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
kim hyunbin 댓글 2 좋아요 1 조회수 1400

인기 태그

인프런 TOP Writers

주간 인기글