묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
이미 구매해서 문의에는 안써져서 여기에 물어봅니다
1. 배포에 관한 부분은 아직 없는 것 같은데 업데이트 중인가요? 아니면 Part2로 나눠서 나올까요?2. 강의 구매 인증을 하면 우선 답변을 받을 수 있는 채널로 초대하신다고 했는데 어디서 구매 인증을 해야 할까요?
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
노드몬 에러 참조하세요
nodemon : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\~~~~~\AppData\Roaming\npm\nodemon.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.위치 줄:1 문자:1+ nodemon+ ~~~~~~~+ CategoryInfo : 보안 오류: (:) [], PSSecurityException+ FullyQualifiedErrorId : UnauthorizedAccess 이런거 뜨면https://velog.io/@kimy/VS-CODE-supervisor-nodemon-%EC%98%A4%EB%A5%98-ps1-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EB%A1%9C%EB%93%9C%ED%95%A0-%EC%88%98-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4이 방법대로 참조하세요 혹시 안되시는분들
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
깃허브에서 다운받지 않고 생성하는 방법 여쭤보고 싶습니다.
저 강의에서는 vpm init 등등을 활용해 노드js 기타등등을생성하셨는데 이번강의에선 깃허브에서 다운을 통해 선생님께서 이미 준비하신 node.js파일들을 제공받았는데..만약 제가 스스로 혼자서 셋팅하고 만들어보고 싶은 경우에는 어찌해야 할까요...? 아니면 그냥 선생님이 만들어주신 저 다운패키지들을 활용해도 별 문제 없을까요...?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
테이블 관계
안녕하세요예를 들어 MockUserRepository를 만들고 그 안에 mydb라는 데이터가 있습니다.만약 기존 User 테이블이 Post 테이블과 관계가 맺어져 있다면 Post까지 mydb에 담아야 하나요?mydb = [{ id= '', name:='', password= '' }] 이렇게 해야 하는 건지아니면 mydb = [{ id: '', name:'', password: '', post: { id: '', title: ''}] 이렇게 작성해야 하는 건지 궁금합니다!! 그리고 userService에서 postService를 사용하는 로직이 있는데 userService 테스트시 MockPost 테이블까지 같이 구현해야 하는 건지..아니면 다른 방법이 있는 건지ㅜㅜ 궁금하네요 하나만 더 여쭤보자면.. ㅜㅜ 제가 이해가 잘 안가서 그러는데 controller.ts를 테스트할 때는 service를 mock하고, service.ts를 테스트할 때는 데이터베이스를 mock해서 사용하는 건가요??
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
yarn start:dev 실행시 에러
포스트맨에서 요청하려는데 어느 부분이 문제여서 에러가 난걸까요?일단 어느부분을 보셔야 해결해주실 수 있으실지 모르겠어서 캡처를 2개 했습니다.
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
확인부탁드리겠습니다.
module.exports = { jwtsecret : "jwt_secret_key_9312", host : "3.38.61.157", user : "root", port : "3306", password : "~~~", detabase : "enrolment", };이렇게 하고 index.js를 해줬는데선생님처럼 aws아이피는 안 뜨고 그냥PS C:\Users\YOONJUNHO\Documents\Test\Node-Template-For-Food-Map-main> node index.js2023-11-15 02:38:07 info: undefined - API Server Start At Port 3000이것만 뜨는데 이것도 연결된건가요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
refresh 토큰이 만료됐는데 만료된 refresh 토큰으로 새로운 refresh 토큰을 발급받는 것인가요..?
access token이 만료되었을 떄 refresh 토큰을 통해 access token을 새로 발급 받는 것은 이해가 되는데.. refresh 토큰이 만료되어서 새로운 refresh 토큰을 발급받기 위한 시점에서 만료된 refresh 토큰을 사용할 수 있는 것인가요..? 조금 헷갈리내요..
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
[토큰 재발급 로직 코딩하기] 토큰 재발급 후 sub 정보 사라짐
signToken(user: Pick<UsersModel, 'email' | 'id'>, isRefreshToken: boolean) { const payload = { email: user.email, sub: user.id, type: isRefreshToken ? 'refresh' : 'access', }; return this.jwtService.sign(payload, { secret: JWT_SECRET, // seconds expiresIn: isRefreshToken ? 3600 : 300, }); } async rotateToken(token: string, isRefreshToken: boolean) { const decoded = this.jwtService.verify(token, { secret: JWT_SECRET, }); if(decoded.type !== 'refresh'){ throw new UnauthorizedException('토큰 재발급은 Refresh 토큰으로만 가능합니다!'); } return this.signToken({ ...decoded, }, isRefreshToken); }토큰 생성 시 payload에서 sub에 user.id를 할당하고 있는데 재발급시 decoded 객체를 그대로 할당하면 sub 정보가 사라지지 않나요?
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
async와 await 로직을 사용해야 하는 기준을 잘 모르겠어요
비동기 로직을 호출만 하고 끝나는게 아니라 결과값을 활용해야할 때 async, await를 활용해야 한다고 이해하고 있는데요. 한가지 이해가 잘 가지 않는 부분이Auth Service에서async registerWithEmail( user: Pick<UsersModel, 'nickname' | 'email' | 'password'>, ) { const hash = await bcrypt.hash(user.password, HASH_ROUNDS); const newUser = await this.usersService.createUser({ ...user, password: hash, }); return this.loginUser(newUser); }async 함수는 결국 Promise를 반환하니까Auth Controller에서@Post('/register/email') registerByEmail( @Body('nickname') nickname: string, @Body('email') email: string, @Body('password') password: string, ) { return this.authService.registerWithEmail({ nickname, email, password, }); }async, await를 사용하지 않으면 제대로 동작하지 않을 줄 알았는데 비동기 호출의 결과인 token이 잘 반환되더라구요. 혹시 이유를 알 수 있을까요?async, await를 판단하는 강사님 만의 기준이 혹시 있으신지, 그리고 굳이 async, await가 필요 없는 곳에도 사용하게되면 성능의 차이가 생기는지도 궁금합니다.
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Follow Count Incremet & Decrement 작업하기 - 2 강의 제목과 내용이 맞지 않는 것 같습니다.
안녕하세요.강의 덕분에 많은 것을 배우고 좀 더 nestjs에 익숙해질 수 있었습니다. 그런데 Follow Count Incremet & Decrement 작업하기 - 2 강의에서 다룬 내용이 comment count 작업과 관련한 내용이었습니다. Follow Count Incremet & Decrement 작업하기 - 1 마지막에는다음 시간에 followee count 증가 감소 내용을 다룰 것이라 하셨었거 든요.강의가 누락된 것 같습니다.참고해 주세요! ㅎ좋은 강의 감사합니다. 이어지는 강의도 많이 기대됩니다. 힘내세요!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
UpdatePostDto 관련 질문
안녕하세요 강사님! 다름이 아니라, UpdatePostDto 코드 작성하는 부분에서 의문이 생겨 질문 드립니다. UpdatePostDto의 코드를 이렇게 작성을 해주셨는데, 하단에이 부분이 왜 필요한지가 이해가 되지 않습니다. PartialType(CreatePostDto)만으로도 충분히 CreatePostDto 안에 있는 프로퍼티들을 Optional 프로퍼티들로 바꾸는거 아닌가요?? 더불어 @IsString validator같은 경우에는 엔티티에서 이미 적용을 해주었기에 더욱 필요없지 않나 싶습니다!따라서 이 두 코드는 동일한 기능을 하는 코드로 생각이 되는데, 이렇게 명시적으로 작성을 하신 이유가 있으신가 해서 여쭤봅니다. 좋은 강의 감사드립니다!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
getAllPost() 함수 관련 질문 드립니다.
// posts.service.ts async getAllPost() { return this.postsRepository.find(); }안녕하세요, 궁금한 사항이 있어 질문 남깁니다. 위 코드에서 find() 메서드는 Promise를 리턴하니까 service에 존재하는 getAllPost 함수는 Promise를 리턴하게 되지 않나요?해당 코드를 실제로 돌려보니 return await this.postsRepository.find() 처럼 돌아가는게 이해가 잘 안됩니다.강의에서는 "컨트롤러에서 바로 반환을 해주기 때문에 async, await을 안 붙혀도 상관이 없다" 라고 말씀해주셨는데, 음... 바로 반환을 하면 Promise가 return되어야 하지 않나란 생각이 듭니다.이 부분에 대한 부연 설명이 가능할까요?감사합니다.
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
$elemMatch 질문이 있습니다.
값을 찾을 때 $elemMatch 로 감싸줘야 둘 다 해당하는 값을 찾을 수 있다고 해주셨는데요.반대로, $elemMatch 를 쓰지 않으면 or 조건으로 검색이 된다고 이해했습니다. 여기서위와 같은 필터로 값을 검색 했을 때 username 이 Henry5522 이거나, title 이 ullam esse dolorem 인 모든 값이 필터 결과로 나와야 하는게 아닌가요?
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
[음량 문제] 섹션 33 - Chat Entity 생성하기
음량이 작아지는 강의입니다. 코드팩토리 통합 링크https://links.codefactory.aiFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.
await Promise.all([ comment.save(), Blog.updateOne({ _id: blogId }, { $push: { comments: comment } }), ]);위 코드에서comment.save() 는 정상적으로 동작해서 DB 에 입력이 되었지만 Blog.updateOne 은 알수 없는 오류로 실패가 떨어졌다면,데이터에 싱크가 맞지 않을 수 있을거 같은데요. comment.save 했던걸 되돌리거나 하는 처리가 있어야 할 거 같은데, 어떻게 처리할 수 있나요?
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
블로그에 user 데이터를 추가하는 방법에 대해서
읽는 시점에 populate 부분에 대한 시간도 최소화 하기 위해서 생성하는 시점에 user 의 최소한의 데이터를 넣어주고 있는거 같은데요.이렇게 접근하면, 화면 중심으로 모델이 설계가 되는게 아닐까요?요구사항이 바뀌거나, 다른 서비스에서 해당 API 를 사용하게 되면 매번 모델을 수정하고 데이터를 마이그레이션 해야 하는 이슈가 생길 수 있을거 같은데요.어떻게 생각하시나요?
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
테이블 insert
Spring Data JPA 를 이용한 Entity 설정과 초기 데이터 생성 강의를 학습하는 도중에 data.sql에 insert into users values(1, now(), 'User1', 'test111', '701010-1111111'); 라고 하면 Error executing DDL insert into users values 이런 오류가 생성되는데 users에 파라미터를 써주고 하니 테이블에 잘 올라갔습니다. 무슨 차이가 있는지 궁금합니다!insert into users(id, join_date, name, password, ssn) values(1, now(), 'User1', 'test111', '701010-1111111');
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
워크벤치 연결 관련 질문드립니다.
어찌저찌해서....연결하다보니워크벤치설치-> aws 인바운드규칙 수정 하고mysql워크벤치에서테스트 커넥션까지해서 연결되었다고 하는데ok버튼을 누르니 Improper name이라더군요.이름이 root면 안되는건가요?
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
mysql이 8.0버전인데 이렇게 하는 거 맞나요?
GRANT ALL PRIVILEGES ON . TO '아이디'@''%'; 이렇게 하라고 하셨는데 아이디에 root를 넣고 %에aws로 받은 ip주로를 넣어도안되네요. 엔터를 눌러도 뭐 작동도 안하고..어찌 해야할까요?참고로you are not allowed to create a user with GRANT라는 에러도 떠서 구글링 해봤는데 어찌 할지 모르겠네요... 까지가 질문이었는데https://1mini2.tistory.com/87를 참고해보니mysql> CREATE USER 'root'@'%' identified by 'Xptmxm1212!@'; 이런식으로 사용자먼저 생성mysql> GRANT ALL PRIVILEGES ON . to 'root'@'%';권한할당mysql> flush privileges;mysql> SELECT Host,User,plugin,authentication_string FROM mysql.user; (확인조회) 이런식으로 하라고 하더라구요. 그래서 보니 이렇게 새로운 호스트와 유저가 생겼습니다. 그 이후, 설명해 주신대로 mysql워크벤치 설치 ->aws규칙수정 -> 워크벤치에서 연결이렇게 했는데 맞는걸까요?한번 틀리면 나중에 다 수정해야하는데 그게 너무 버거워서 확인차 질문 남겨봅니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
안녕하세요 AccessToken 관련 질문입니다.
안녕하세요 얼마전에 Access Token 관련 질문을 드렸습니다.저는 Backend 강의만 듣고 있어서 Frontend 강의가 어떻게 진행되었는지 몰라서 여쭤봅니다!현재 전역 스테이트 변수인 recoil을 사용해서 AccessToken을 저장 중 입니다.하지만 그냥 recoil만 사용할 때는 새로 고침 시 데이터가 삭제되어서 문제가 되고 있습니다.persistAtom 이라는 속성을 사용해서 상태가 유지되도록 할 수 있다는 것을 알게 되었는데 이렇게 사용할 경우 localstorage에 토큰 값이 그대로 들어가더군요.그러면 토큰 값이 그대로 노출되어서 보안상 문제가 될 것 같은데 혹시 이게 문제가 안되는지, 그대로 사용해도 되는지아니면 새로고침시 계속 token이 사라지니까 모든 컴포넌트에 useEffect를 사용해서 restoreAccessToken을 호출하도록 만들면 어떨까요?다른 방법이 있다면 방향을 알려주세요! 감사합니다.