[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
예를 들어 자산을 관리하는 페이지가 있고 나의 자산조회 나의 자산환전 나의 자산전송 이와 같이 구성되고 여기서 선물이나, 현물로 분기된다고 쳤을때 모듈에 모듈이 들어가거나 컨트롤러에 컨트롤러가 중첩되어 들어가는 경우도 생기나요? 가지치기하듯 서비스가 확장되어갈때 어떤 방식으로 구조를 짜야할지 감이 안오네요
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
@Post() @UseGuards(AccessTokenGuard) @UseInterceptors(TransactionInterceptor) async postPost(@User("id") userId: number, @Body() body: CreatePostDto, @QueryRunner() qr: QR) { // temp -> posts로 옮긴다음에 포스팅 const post = await this.postsService.createPost(userId, body, qr); // throw new InternalServerErrorException("에러가 생겼습니다."); // 포스트만 생성하고, 이미지는 생성안해버림 throw 에러에서 걸림. 원래는 포스트 게시글이 생기면 안됨. for (let i = 0; i < body.images.length; i++) { await this.PostsImagesService.createPostImage( { post, order: i, path: body.images[i], type: ImageModelType.POST_IMAGE, }, qr, ); } // Transaction 타입에 따라서 Transaction이 커밋 되기전에 최신 값을 가져오지 못할 수 있다. (service에서 해당 문제 처리 직접 qr받아서) // 가장 최근상태의 포스트를 받아와서, 반환해줌. return this.postsService.getPostById(post.id, qr); Transaction 타입에 따라서 Transaction이 커밋 되기 전에 최신 값을 가져오지 못할 수 있다고 하셔서, getPostById service에서 직접적으로 qr을 주입받아서, 사용했는데 정확히 어떤 이유로 최신 값을 못받아오는지 잘 이해가 안가서, 자세히 설명을 해주실 수 있나요?
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
// POST auth/login/email @Post('login/email') @UseGuards(BasicTokenGuard) // authorization 기준으로 rawToken을 받아옴. postLoginEmail(@Headers('authorization') rawToken: string, @Request() req) { // email:password -> base64 // adsfasdfasfdad => email:password const token = this.authService.extractTokenFromHeader(rawToken, false); const credentials = this.authService.decodeBasicToken(token); return this.authService.loginWithEmail({ email: credentials.email, password: credentials.password, }); } 질문이 있습니다. req.user.email , req.user.password 이런식으로 Guard를 통해 요청에 대한 값을 받아올 수 있다고 설명해주셨습니다. 실제로 guard 부분에서, 해당 extractTokenFromHeader부분과, decodeBasicToken 부분이 겹치는 것 같은데, 이중적으로 처리해주는 것이 맞는지 아니면 아래와 같이 req.user.password 부분을 디코드 해주어서, 중복 부분을 생략해 줄 수 있을 것이라고 생각하는데 어떤 접근방법이 맞는지 궁금합니다! 이 부분도 중복을 해결해야 하는 부분 아닌가 해서 궁금합니다! // POST auth/login/email @Post('login/email') @UseGuards(BasicTokenGuard) // authorization 기준으로 rawToken을 받아옴. postLoginEmail(@Headers('authorization') rawToken: string, @Request() req) { // 여기는 req.user.password를 직접 입력하게되면 인코드된 값이므로, 디코드 된 값이 들어가야 할 것 같긴합니다. (JWT 모듈같은 것을 활용해서!) return this.authService.loginWithEmail({ email: req.user.email, password: req.user.password, }); }
사실 코틀린은 제가 한번도 사용해 본적도 없고 이번에 프로젝트 구성할때 자바로 만들 계획이라서요. 그렇다고 선생님 실습 코드를 전부 그래도 사용하는것은 아닌데요. 강의 보면서 자바로 구성된 코드를 보면서 공부하면 이해하는데 도움이 많이 될것 같아서요... 부탁드립니다!!
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
항상 좋은 강의 감사합니다. 강의를 들으며 궁금했던 부분은 제가 따로 테이블 컬럼이름을 설정해준 적이 없는데 자동으로 columnId 값으로 지정된 부분입니다. 현재 제 추측으로는 async createPost(authorId: number, title: string, content: string) { const post = this.postsRepository.create({ author: { id: authorId, }, title, content, likeCount: 0, commentCount: 0, }); const newPost = await this.postsRepository.save(post); return newPost; } 해당 부분에서 create의인자로 받는 author 부분에서 key 값인 id를 확인해서 자동적으로 authorId 라는 값이 만들어진건가 추측해보고 있는데 혹시 제 추측이 맞을까요?
안녕하세요 현재까지 강의 내용 잘 보고 있습니다 한가지 편집 문제가 있는듯하여 공유겸 문의남깁니다 섹션2 - 결제 승인 기능 구현편 4:42~3초에 편집이 잘못된듯합니다 private val paymentStatusUpdatePort: PaymentStatusUpdatePort, private val paymentValidationPort: PaymentValidationPort, private val paymentExecutorPort: PaymentExecutorPort, 요게 갑자기 뿅 다 생겨있습니다 전반적으로 코드 작성하는 부분을 편집해서 그런지 너무 빠르네요 ㅠ 강의보면서 따라서 입력하기 너무 빡쎄네요 ㅠ 재생/멈춤을 계속 반복해야되서 오히려 역효과 발생하는 것 같아요
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
안녕하세요 선생님~ 위와 같이 세팅해서 user/profile 로 post 요청을 보내면 500 에러가 나야하는걸로 알고 있는데, 이처럼 잘 들어가 버리네요ㅜ `users` 로 get요청을 보내도 profile이 null이 들어간 상태로 조회됩니다. 개발환경 버전도 올려드립니다~
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
안녕하세요 코팩님 nestjs/config 모듈과 process.env 를 이용해서 환경변수 파일을 작성하고 환경변수를 불러오고 하잖아요. 그런데 docker-compose.yaml 파일에도 db password나 이런게 존재하는데, docker-compose 파일은 깃허브에 보통 포함을 안 하나요?