학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 프로젝트 지웠다가 처음부터 다시 해보기도 하고 질문글 따라 보면서 해봐도 에러가 떠서 어떻게 해야할지 모르겠어요.. .
[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
안녕하세요~ 백앤드 소스 코드 요청 드립니다. [ 부트캠프에서 만든 고농축 백엔드 코스] 메일로도 요청드리고, 코드캠프 백앤드 게시판에도 요청드렸는데, 답변이 안달려서 여기 한번더 남깁니다. 부분적으로 필요한 부분만 수강하고 싶은데, 앞부분을 수강하지 않으면 수강하기 곤란한 부분이 있어서 소스코드좀 보내주시면 감사하겠습니다~ sunshinew@naver.com
Custom Repository 부분에서 에러가 나서 해결 하긴 하였으나 맞는 과정인지는 잘 몰라 문의드립니다. 강의에서 사용하는 @EntityRepository방식은 구버전(0.2.x) 방식으로 최신버전에서는 제거되었습니다. 강의 코드를 그대로 따라하면 ... is not a function같은 에러가 발생합니다. 그래서 user.repository.ts, auth.modules.ts 수정, auth.service.ts를 수정 1. user.repository.ts 수정 1. user.repository.ts 수정 Repository를 일반 서비스로 만들기 위한 핵심 작업입니다. 수정 내용: @EntityRepository(User) 데코레이터를 삭제하고 @Injectable()을 추가했습니다. Repository 클래스를 초기화하기 위해 constructor (생성자)를 추가하고, 그 안에서 super()를 호출했습니다. // src/auth/user.repository.ts import { Injectable } from '@nestjs/common'; import { DataSource, Repository } from 'typeorm'; import { User } from './user.entity'; // ... @Injectable() // ✅ 변경 export class UserRepository extends Repository<User> { // ✅ 생성자 추가 constructor(private dataSource: DataSource) { super(User, dataSource.createEntityManager()); } async createUser(/* ... */): Promise<void> { // ... } } 2. auth.service.ts 수정 -> providers 배열에 UserRepository를 추가했습니다. 이유: providers 배열에 등록해야만 AuthModule이 "아, UserRepository라는 서비스를 모듈로 포함시켰습니다. // src/auth/auth.module.ts import { UserRepository } from './user.repository'; // ... @Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [AuthController], providers: [ AuthService, UserRepository, // ✅ UserRepository를 providers에 등록 ], }) export class AuthModule {} 3.auth.service.ts 수정 > 서비스에서 Repository를 주입받는 방식을 변경합니다. 수정 내용: @InjectRepository(User) 데코레이터를 삭제하고, 생성자에서 UserRepository를 직접 타입으로 선언하여 주입받습니다. 이유: UserRepository는 이제 마법 같은 존재가 아닌 일반 서비스이므로, 다른 서비스를 주입받을 때와 똑같이 클래스 이름만으로 간단하게 주입받을수 있습니다. // src/auth/auth.service.ts import { Injectable } from '@nestjs/common'; import { UserRepository } from './user.repository'; // 🗑️ import { InjectRepository } from '@nestjs/typeorm'; <- 삭제 @Injectable() export class AuthService { constructor( // 🗑️ @InjectRepository(User) <- 삭제 private userRepository: UserRepository, // ✅ 직접 주입 ) {} async signUp(/* ... */): Promise<void> { return this.userRepository.createUser(/* ... */); } } 일단 이런식으로 수정했는데 이 과정이 맞는지는 잘 모르겠습니다! 강사님이나 따로 혹시 올라와 있는 코드가 있다면 참고해보겠습니다!
상위 레이어의 정보를 알면 안되기 때문에, repository에서는 dto가 아니라 모델을 받아야 한다고 하는데, 모델의 타입이 어떻게 되는 건가요? 그리고 위의 예제에서 service의 create 메서드는 아래와 같이 dto를 인자로 넘겨주고 있는데, 그러면 dto로 타입을 맞춰야 하지 않나요? async create(createPostDto: CreatePostDto): Promise<Post> { const post = this.postRepository.create(createPostDto); return this.postRepository.save(post); } 그리고 글 수정 api 컨트롤러에서 put 메서드를 사용하신 것 같습니다. @Put(':id') update( @Param('id', ParseIntPipe) id: number, @Body(ValidationPipe) updatePostDto: UpdatePostDto, ) { return this.postService.update(id, updatePostDto); } 제가 생각했을 때는 일부분을 수정하는 케이스니까 restful 하도록 바꾼다면, patch 메서드가 적합하다고 생각이 드는데, 이해한게 맞을까요? 감사합니다.
21:09 지금 까지 이해한 포인터의 방법은 주소 사용할때는 & 또는 생략, 값을 사용할때는 *로 이해하고 있습니다. 해당 printf("%s\n", arr[0][0]); 라는 구문에 질문이 있습니다. 포인터 변수로 해당 문자열의 주소를 각 맵핑하였고 배열에 맞게 출력하는걸로 해석이 되는데 이때 왜 값을 안 가져오고 주소를 가져오는지 궁금합니다. 또한 %s로 출력하고 해서 주소대신에 값으로 가져오는지 궁금합니다.
nest.js에서의 레이어드 아키텍처 구조 에 궁금한 점이 생겨 질문을 남깁니다 각 계층별 실제 구현 파일을 아래와 같이 이해하면 될까요? repository 와 entity 가 정확히 어떤 계층에 속하는지 궁금합니다. Presentation Layer controller.ts Application Layer service.ts Domain Layer repository.ts entity.ts Data Transfer Object dto.ts
유형 9번에서 처음에 Child obj = new Child(); 의 뜻이 Child 타입의 새로운 생성자를 생성하는 것이고, 이 생성자의 자식 class로 갔는데, 생성자가 없고, 부모에도 생성자가 없어서 출력되는 값은 없는 것이고, 그 뒤의 obj.display()코드를 실행해 display의 메서드에서 부모로부터 상속받아 Parent display, Child display가 답이 되는것이 맞을까요?
안녕하세요. 궁금한게 있어서 질문 드립니다. domain 패키지에 entity를 위치 한다고 했을때 주석이라고 말씀하신 어노테이션 JPA @Entity를 만들어서 Member로 정의 그리고 mongo DB도 필요해서 @Document를 정의해서 domain 패키지에 위치 시켜 Member로 정의 이처럼 같은 도메인이 서로 다른 DB로 사용 될때 어떻게 도메인으로 정의해야할지 궁금합니다. 그리고 이름이 중복되는 현상도 발생하기도 합니다. 그렇다고 OracleMember, MongoMember로 지을수도 없는것같습니다. 제 생각은 Member라는 도메인이 Domain 패지키에 별도로 나와서 adapter 안에 JPA Persistent의@Entity로 정의된 클래스와 Mongo Persistent의 @Document로 정의된 클래스가 위치 되어야한다고 생각하는데 어떤 의견이신지 궁금합니다.
[Live 챌린지] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
공통 컴포넌트 부분의 프롬프트를 실행하던 중에 궁금한 점이 있어요. 아래와 같이 실행을 했는데, 1) input 버튼을 만들기 위해 파일 실행 - commons/components/input/prompts/prompt.101.ui.txt 2) 아래와 같은 답변이 나옴 (Claude-4.5-sonnet thinking model 사용): 🤔 룰 간 충돌 분석 prompt.101.ui.txt: variant 시스템 구현 요구 03-ui.mdc: 피그마 디자인 그대로만 구현하라고 요구 피그마 실제: 단일 Input만 존재 그리고 저 또한, AI가 돌린 코드를 분석하고 룰 재검토 및 실행을 몇 번 반복하는 과정에서 실질적으로 문제가 있을 수 있다고 보였어요. 1) Case 1 처음에 Button 컴포넌트를 위해서 프롬프트를 실행했을 때는 prompt.101.ui.txt 의 " 다음 조건을 모두 만족하는 완전한 variant 시스템을 구현할 것 ." 이 조건을 만족하기 위해서 노드ID 제공했는데도 불구하고, 계속해서 피그마의 모든 button을 다 찾아서 사이즈를 가져오는 것을 볼 수 있었습니다. 2) Case 2 그 다음에 Input 컴포넌트를 위해서 프롬프트를 실행했을 때는 03-ui.mdc 의 " 피그마 링크가 제공되면, 모든 사이즈는 제공된 피그마와 동일하게 처리할 것 " 이라는 룰을 검토하는 과정에서 문제가 있었습니다. 이 조건 때문에 반응형 웹은 고려하지 못하고 width를 진짜 있는 그대로 갖고 와서 상수로 넣어버리고, 유연성이 전혀 없게 만들었습니다. 몇 번 룰을 재검토하라고 시키고 원하는 코드와 비슷하게 만들긴 했지만, 혹시 이런 경우에 대한 해결 방법이 있을까요?
강의를 보다가 리뷰 입력 하는 부분..약 2분 정도 되는 시점에서 리뷰를 데이터 베이스에 입력 하기 위해서는 준비해야 할 것이 많다고 하셨는데.. 구체적으로 어떤 준비가 필요한가요?? supabase를 사용 하는 것이니까 테이블 만들고.. insert 함수 호출 해서 입력 하면 되는 것 외에 다른 준비를 해야 하는 것이 있나요??