묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
guard에서 요청객체 불러오기
bearerTokenGuadr와 basicTokenGuard를 작성했는데, 토큰 추출을 못합니다.에서 req 요청객체를 제대로 불러온 것인걸까요? 포스트맨에서 auth/token/refresh에서 authroization을 체크하거나 체크하지 않건 둘다 토큰이 없다고 나오는데.. 추출에 문제가 있어 보입니다. BasicTokenGuard는 잘 추출되서 로그인까지는 잘 되는데, BearerTokenGuard는 추출이 안되는지 에러메세지 '토큰이 없습니다.'가 나옵니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Paginate에서 overrideFindOptions 문제
overrideFindOptions에서 where절을 작성하면 dto에 있는 where 조건들이 제대로 동작하지 않는 거 같아요 paginateComments(dto: PaginateCommentsDto, articleId: number) { return this.commonService.paginate( dto, this.commentsRepository, { relations: { author: true, }, select: { author: { id: true, devName: true }, }, where: { article: { id: articleId }, }, }, `articles/${articleId}/comments`, ); }paginate에서 where조건이 있으면 병합하는 방법으로 해결해보려고 했는데 원하는대로 동작하지 않는거 같습니다. 어떻게 해결하면 좋을까요??
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
임시 폴더로부터 이미지 파일 이동시키기
임시폴더로 부터 이미지 파일 이동시키는 강의를 들었는데요.지금은 아직 S3 를 사용하지 않지만 만약 S3 를 사용할때도 임시폴더를 만들어두시고, 최종적으로 저장을하게 되면 이미지 파일을 S3에 이동을 시키시나요 ?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
file upload common module 관리
강의에서 image 업로드 시에common module 를 만들어서 업로드 진행하는것을 봤는데요.controller 단에서 타고와서 메서드에서 필터링 처리하는게 아니라,이미 module 에서 검증된것을 파일 올리기만 하니까 간편해보였습니다.만약 이미지 파일뿐만 아니라 , 엑셀파일로 업로드 받는다고 하면 어떻게하면될까요 ??그때도 common.modules.ts 파일안에 register 메서드에 조건문으로 처리하시나요 ??ex) if (ext === '.xlsx') { } elif (ext === '.jpg' && ext === '.jpeg' && ext === '.png') { }
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
이미지 업로드
안녕하세요 ㅎ이미지 업로드 방식에 대해서 말씀해주셨는데요.말씀하신것처럼 사용자가 이미지를 올렸다가 마음이 바껴서 다른 이미지를 올리고싶을때 다시 이미지를 여러번 교체할수있잖아요하지만 데이터베이스 상에서는 마지막으로 올린 S3 경로가 저장되어있을텐데요.이럴경우 데이터베이스상에는 저장이 되어있지않지만 S3 에 올라간 이미지들은 어떻게 하시나요 ?주기적으로 삭제 해주신다고 하셨는데 어떤방식을 하시나요 ?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
이미지 저장 경로 Public
안녕하세요 ! 우선 지금은 공부 단계이기때문에 이미지저장 경로를 S3 로 하지않고 Public 으로 하시나요 ?아니면 원래 Public 에다가 이미지를 저장하시나요 ??
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
3. 동물앨범 만들기-2-3 질문입니다.
해당 강의에서 컴포넌트를 만들고 상태관리를 할때 모든 코드에 this가 왜 붙는건가요??저렇게 만든것도 그냥 객체인거 같은데 let state ={} 로안 하고 let도 없고 변수도 없는데 this로 state를 참조되는것도 궁금합니다.모든 코드에 this가 붙는 이유일반함수에 this한거니 그냥 window 객체에 state 변수가 생긴건지 궁금합니다.2가 아니면 그냥 state라는 걸 자바스크립트가 제공해서 참조해서 사용하는것인지this.state = {};
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
...
..
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
롬북이 안먹히는것같아요
getter ,setter 가 오류가나는데 원인을 모르겠어요
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
name에 계속 줄이 그어지는 이유가 궁금합니다.
코드 관련 질문은 아래와 같이 '코드블럭' 기능을 이용해주세요!+ 오류 메세지도 함께 올려주시면 좋아요 🙂console.log('hello'); 강의에서 보면 name을 선언한 후 typeof에서 name에줄이 쳐져있는데 혹시 왜 그런건지 알 수 있나요?제 컴퓨터에서도 사용하여 봤는데 name은 사용되지 않습니다. 라고 나옵니다
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
수업 외적질문...
이건 수업 외적인 질문인데요. 목소리가 달라서 다른 강사님이시지만.. 똑같은 코드팩토리 Flutter 수업듣고있는데요TypeScript 와 Nest js 를 사용하시면 React Native 를 학습하시고사용하시는게 나을수도 있을텐데 , Flutter 를 선택하신 이유가 있나요 ??React Native 가 성능이 비교적 Flutter 보단 안좋다고 하지만 큰 기업들에선 React Native 도 많이 사용하고 있던데 그럼 쓰는사람에 따라 다른게 아닐까?? 생각도 했거든요
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
history api 예제연습에서
history 연습예제에서 뒤로가기 앞으로가기 버튼 눌렀을때는 화면에 제대로 표시되지 않아서요강사님 소스를 여러번 확인해봤는데,,,,뭐가 혹시 틀린걸까요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
로그인/소셜로그인 테이블 설계 관련 궁금증 관련 질문입니다.
강좌를 들은 후, 소셜로그인을 구현하다가 의문점이 생긴 부분이 있어 어떠한 방식으로 접근하는 것이 궁금하여 질문을 남깁니다.상황일반 회원가입시에는, 이메일 비밀번호 + 해당 서비스에 필요한 필수 정보들을 받고, 해당 내용을 클라이언트로 부터 받아 user테이블에 저장하는 상황입니다.소셜 로그인 같은 경우에는, 정보를 받을 수 있는 것이 제한이 되어있어, 추가적으로 필요한 정보들을, 소셜 로그인 성공 이후, 클라이언트 측에서 회원가입시 필요한 정보들을 받을 수 있는 화면으로 이동시켜, 해당 정보를 받아서, 부족한 정보들을 채워넣는 것으로 알고 있습니다.궁금점.소셜로그인 로그인 후, 신규 유저이기에 서비스 이용에 필요한 필수 부가정보 입력을 받기위해, 회원가입 창으로 이동시켜, 부가 정보를 입력받는다면 크게 문제가 없습니다.하지만, 앱을 사용하다보면은 데이터가 끊긴다거나, 배터리가 방전된다거나, 알수없는 이유로, 로그인은 되었으나, 필수 부가정보를 입력하지 못하고, 꺼지는 경우가 있습니다. 필수 부가정보를 꼭 받아야 하는 경우라면 이 부분에 대해서 어떻게 처리해야하나요?필수 정보를 채웠는지 여부를 확인하는 column을 boolean으로 User 테이블에 추가하여, 클라이언트에서 해당 Column으로 부가정보를 입력받지 않았으면 메인화면으로 가지않고, 회원가입 스크린으로 리다이렉 시키는 이런 로직을 작성해야하나요?필수 정보를 채웠는지 여부를 확인하는 column 없이 이런 경우에 처리할 수 있는 방안이 있는지 궁금하고, 현업에서는 어떤식으로 테이블을 설계하는지 궁금합니다!
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
인텔리제이에서스프링부트 파일 실행하면
이렇게 밖에 안보입니다 ㅠㅠㅠ어떻해야하나요.?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
overridFindOptions
안녕하세요 코팩님! 개인 프로젝트를 하다가 약간의 오점을 발견해서 질문드립니다.위 사진과 같이 paginate함수의 overrideOptions 파라미터에 where필터를 새로 작성하는 순간,기존에 composeOptions에서 작성한 where필터를 아예 무시해버리게 되는 것 같습니다. 그래서 첫 번째 페이지는 정상적으로 응답이 오는데, next에 담긴 링크를 눌러보면 똑같이 첫번째 페이지가 응답으로 오게되는 것 같아요.위와같은 증상이 뒷부분의 paginateComments에서도 똑같이 발생합니다. 첫번째 페이지는 작동이 잘 되기때문에 영상에서는 넘어가신 듯 한데,여러 방법을 써봤지만 해결책이 보이지 않아서 질문드립니다ㅠ
-
미해결스프링 기반 REST API 개발
java.lang.AssertionError: Status
안녕하세요 기선님의 강의를 보면서 스프링부트 3.x버전때로하고있는데 에러 발생되어서 문의드립니다..답글에 소스코드 올렸습니다..첫번째는 메이븐에서 <version>2.3.1</version> 을 입력 하는 경우 해당 지원 라이브러리가 지원이 안되는 경우가발생하는데 왜그러는걸까요?..두번째는 예제보고 따라하는데..아래와 같은 오류가 발생합니다..이건 왜그러는것일까요??<오류>MockHttpServletRequest:HTTP Method = POSTRequest URI = /api/events/Parameters = {}Headers = [Content-Type:"application/json;charset=UTF-8", Accept:"application/hal+json", Content-Length:"403"]Body = {"id":10,"offline":false,"free":false,"eventStatus":null,"name":"Spring","description":"REST API Development with Spring","beginEnrollmentDateTime":"2018-11-23T14:21:00","closeEnrollmentDateTime":"2018-11-24T14:21:00","beginEventDateTime":"2018-11-25T14:21:00","endEventDateTime":"2018-11-26T14:21:00","location":"강남역 D2 스타텁 팩토리","basePrice":100,"maxPrice":200,"limitOfEnrollment":100}Session Attrs = {}Handler:Type = org.springframework.web.servlet.resource.ResourceHttpRequestHandlerAsync:Async started = falseAsync result = nullResolved Exception:Type = org.springframework.web.servlet.resource.NoResourceFoundExceptionModelAndView:View name = nullView = nullModel = nullFlashMap:Attributes = nullMockHttpServletResponse:Status = 404Error message = No static resource api/events.Headers = [Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers"]Content type = nullBody =Forwarded URL = nullRedirected URL = nullCookies = []MockHttpServletRequest:HTTP Method = POSTRequest URI = /api/events/Parameters = {}Headers = [Content-Type:"application/json;charset=UTF-8", Accept:"application/hal+json", Content-Length:"403"]Body = {"id":10,"offline":false,"free":false,"eventStatus":null,"name":"Spring","description":"REST API Development with Spring","beginEnrollmentDateTime":"2018-11-23T14:21:00","closeEnrollmentDateTime":"2018-11-24T14:21:00","beginEventDateTime":"2018-11-25T14:21:00","endEventDateTime":"2018-11-26T14:21:00","location":"강남역 D2 스타텁 팩토리","basePrice":100,"maxPrice":200,"limitOfEnrollment":100}Session Attrs = {}Handler:Type = org.springframework.web.servlet.resource.ResourceHttpRequestHandlerAsync:Async started = falseAsync result = nullResolved Exception:Type = org.springframework.web.servlet.resource.NoResourceFoundExceptionModelAndView:View name = nullView = nullModel = nullFlashMap:Attributes = nullMockHttpServletResponse:Status = 404Error message = No static resource api/events.Headers = [Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers"]Content type = nullBody =Forwarded URL = nullRedirected URL = nullCookies = []java.lang.AssertionError: StatusExpected :201Actual :404<Click to see difference>at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:59)at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:122)at org.springframework.test.web.servlet.result.StatusResultMatchers.lambda$matcher$9(StatusResultMatchers.java:637)at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:214)at com.example.wrpi.global.events.EventControllerTest.createEvent(EventControllerTest.java:59)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)at java.base/java.lang.reflect.Method.invoke(Method.java:578)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76)at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)at org.junit.runners.ParentRunner.run(ParentRunner.java:413)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Process finished with exit code -1
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
cursor 기반 페이지네이션 page 기반 페이지네이션
cursor 기반 페이지네이션과page 기반 페이지네이션에서어떤 상황에서 cursor 를 사용하고 어떤 상황에서는 page 기반 사용해도 될까요 ??insert , delete 에 대한 요청이 잦은 서비스 라면 cursor 를 사용하고주로 get 에 대한 요청밖에 거의 없을것 같은 서비스라면 page 기반 페이지네이션을 사용하면 될까요 ?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
내림차순 next 토큰 로직 작성하기 질문
안녕하세요 ㅎ강의 잘듣고 있습니다.내림차순 정렬 부분을 듣고있다가createQueryBuild 을 사용해서 하는것은 어떻게 생각하시나요 ??
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
nestjs+graphql에서 부분적으로 restapi를 사용해도되나요?
소셜로그인 부분을 그래프큐엘 가드를 사용해서 적용하면 원인을 도저히 모르겠는 , res.setHeader function이 없다는 에러가 계속 발생하는데요..챗지피티 무료버전에 물어보니소셜로그인 부분은 restapi로 구현한다고하는데..챗지피티를 믿을수가없어서요.. 소셜로그인 부분은 restapi로 해야된다.그래프큐엘로 바꿀수있는데 너가 코드를 잘 못친듯?1번과 2번중에 어떤건가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
선생님 nestjs+graphql에서 구글로그인처리는 못하는건가요?
챗지피티에 물어보면 , NestJS와 GraphQL 환경에서도 Google OAuth 2.0을 이용한 소셜 로그인을 구현할 수 있습니다. 다만, GraphQL은 주로 데이터를 가져오고 조작하는데 사용되므로, OAuth와 같은 인증 과정은 일반적으로 REST API 엔드포인트를 통해 처리하는 것이 일반적입니다. 이렇게 하면 OAuth 2.0의 리디렉션 흐름을 관리하기가 더 쉽습니다.라고 하는데용,그러면 nestjs랑 graphql환경이라고해도 OAuth같은 소셜로그인은 rest-api처럼 컨트롤러를통해서 해주는건가요?