묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
refresh token db 저장
강의 내용중엔 빠졌지만 refresh token을 db에 저장해야하는것으로 알고있는데요테이블 설계시 refresh 토큰을 User 테이블 내에 칼럼으로 넣을까 생각을했었는데의미가 맞지않는것같아서요 아래처럼 one to one 관계로 해서 관리하는건 올바른 방법일까요?class TokenModel { @PrimaryGenerateKey() @OneToOne(() => UserModel, user => user.refresh) id: string; @Column() refreshToken: string; } class User { ... @OneToOne(() => TokenModel, token => token.id) refresh: TokenModel }
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
GraphQL import 오류
GraphQL 관련된 내용이 뜨는 것 같긴 한데 ObjectType과 Field를 못 찾는 것 같습니다.. yarn add graphql을 해봐도 안되네요
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Transaction 파트에서 에러 발생 후 포스트를 정상적으로 생성하지는 않지만 id값은 증가하는데 정상인가요?
안녕하세요 코드팩토리님!! Transaction 파트에서 궁금한게 있어서 질문 드립니다.Transaction 적용후 테스트로 에러 발생해 보니 정상적으로 포스트가 생성되지는 않습니다.그런데 이후 정상적으로 포스트를 한개 생성하니 이전 마지막 포스트가 10이었으면 이번에는 12번으로 생성됩니다.에러 발생후 포스트는 생성되지 않지만 id 값은 증가하는데 정상적인 현상인가요?? 참고로 에러는 코드팩토리님 처럼 중간에 throw new InternalServerErrorException()을 넣고 저장하면 밑에 코드가 전부 지워져서그냥 images[]에 이미지 넣을때 알파벳 몇개 지워서 일부로 에러 발생하는 방식으로 에러 테스트 했습니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
add Database Connection 에서 막혔습니다.
안녕하세요 강사님 add Database Connection 도중 6번째 항목에서 저는 show All Databases나 postgres가 없어서요.. 진행을 못하고 있습니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
compose.yaml 파일 작성시 environment 오류
안녕하세요 강사님 강의를 들으면서 작성중에 다음과 같은 오류가 발생해서 질문드립니다.강의와 동일하게 작성하였으나 string 타입으로 작성해달라고 오류가 뜨는거 같아서요.. 어느부분이 문제인지를 모르겠습니다.
-
해결됨
NestJS 통합테스트 후 데이터 처리
안녕하세요, 저는 Spring에서 Nest로 넘어온 네린이입니다.스프링에서는 통합테스트 작성시에도 데이터베이스에 데이터가 삽입되거나 업데이트 되지않도록 롤백시키는 방법이 존재하는데 Nest에서는 어떻게 해야하나요? 제가 생각하는 방법은 직접 쿼리러너를 통해 afterEach를 통해서 매번테스트후에 롤백을 시키는방법을 생각했습니다.
-
미해결따라하며 배우는 NestJS
repository.ts 에서 method 를 가져 오고 싶은데, 해당 메소드가 없다고 뜨네요
현재, nestjs로 게시판 만들기를 학습 하고 있는데,에러에, 에러에, 에러에, 에러의 연속이네요... 데이터베이스 연결이 안 되는 에러를 계속 보다가 어찌 어찌 해결은 했는데ERROR [TypeOrmModule] Unable to connect to the database. 이젠 메소드를 찾을 수 없다는 에러가 계속 뜨네요...뭐가 문제인 것일까요... 후우 또 열심히 검색을 해봐야겠습니다... // board.repository.ts import { EntityRepository, Repository } from "typeorm"; import { Board } from "./board.entity"; import { CreateBoardDto } from "./dto/create-board.dto"; import { BoardStatus } from "./board-status.enum"; @EntityRepository(Board) export class BoardRepository extends Repository<Board> { async createBoard(createBoardDto: CreateBoardDto) : Promise<Board> { const { title, description } = createBoardDto; const board = this.create({ title, description, status: BoardStatus.PUBLIC }) await this.save(board); return board; } }// boards.service.ts import { Injectable, NotFoundException } from '@nestjs/common'; import { BoardStatus } from './board-status.enum'; import { CreateBoardDto } from './dto/create-board.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { Board } from './board.entity'; import { Repository } from 'typeorm'; // import { BoardRepository } from './board.repository'; @Injectable() export class BoardsService { constructor( @InjectRepository(Board) private boardRepository: Repository<Board>, ) {} createBoard(createBoardDto: CreateBoardDto) : Promise<Board> { return this.boardRepository.createBoard(createBoardDto); } async getBoardById(id: number): Promise <Board> { const found = await this.boardRepository.findOne(id); if(!found) { throw new NotFoundException(`Can't find board with id ${id}`) } return found; }
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
docker-compose up 명령 실행후에
services.postgres Additional property restrart is not allowed이런 내용이 뜨면서강사님 영상과 같은 로그들이 나오지 않는데 어떻게 하는 것이 좋을까요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
new 와 그냥 클래스 차이에 대한 추가 질문
코팩님 강의 잘보고있습니다. :) 'DefaultValuePipe 사용해보기'라는 강의에서 궁금한 것이 있어서 질문드립니다.new와 그냥 클래스는 제가 이해한 바로는 그냥 클래스처럼 넣게 되면 DI를 통한 nest에서 싱글톤 패턴으로 ParseIntPipe를 주입해주는 것이고 new키워드를 붙이게 되면 인스턴스가 생성하게 됨으로 nest에서 DI로 주입해주는 것이 아닌 ParseIntPipe클래스의 인스턴스가 생성되는 방식인가요?감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
파일 업로드 질문
안녕하십니까혹시 graphql을 이용한 이미지 업로드 부분에서포스트맨 말고 클라이언트에서 요청하려고 할 때다른 설정들이 필요한가요?여러 방법들을 해봤는데 모두 안되서 질문 드립니다. await axios.post("http://localhost:5656/graphql", { query: ` mutation { uploadFile(file: ${file}) } `, })const file = files[0] await axios.post("http://localhost:5656/graphql", { query: ` mutation uploadFile($file: Upload!) { uploadFile(file: $file) }, `, variables: { file: file, }, })
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
배열을 스웨거로 작성하는 법을 모르곘어요
퀴즈 4 풀고 있는데 1개 이상의 배열을 스웨거로 작성하는 법을 모르겠습니다.예를 들면[{name:"철수",age:2},{name:"훈이",age:3}] 이런거를 이런 예시를 가지고 2개의 배열로 나타내는 법을 모르겠습니다
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
[모든 Route 기본 Private로 만들고 IsPublic Annotation 작업하기] IsPublic을 사용하면 RefreshTokenGuard도 무력화되지 않나요?
RBAC까지 다뤄주시다니 정말 흥미로운 내용이었습니다!다만 현재 로직상으로는 RefreshTokenGuard이 적용된 Access 토큰 갱신, Refresh 토큰 갱신 API에 IsPublic을 적용하면 RefreshTokenGuard도 미적용되지 않나요?실제 저 API들을 Access Token으로 호출해보면 Guard가 아니라 Service 단에서 Exception이 발생하는 것 같더라구요.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
포트폴리오 작성할 때 강의에서 배운대로 적어도 되나요?
포트폴리오 작성하고 있는데 강의에서 배운 내용들로 채워도 되나요? 아니면 선생님이 doc를 직접 찾아보라고 일일히 강의에서 설명하지 않은 내용들을 써야하나요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
AWS-RDS 사용중인데 createdAt 시간이 실제 시간과 맞지 않습니다.
왼쪽은 엣지 inprivate, 오른쪽은 크롬 시크릿 모드 브라우저입니다.서로의 채팅 입력 시간이 9시간 전으로 표시되고 있습니다. 실제로 서버의 createdAt은 한국 표준시라고는 되어있지만 실제 시간보다 9시간 느린 시간이 저장되었고 entities/channelChats.ts의 설정 내용은 강사님의 깃헙 내용과 동일했습니다. aws - rds에서 확인해본 DB도지역이 ap-northeast-2a, 서울로 잘 지정되어 있었습니다. 혹시 작업 중에 이런 경우 보신 적 있으신가요?어디를 더 살펴봐야 서버에 제대로 된 현재 시간이 저장될 수 있을지 조언 부탁드립니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
포스트 컨트롤러에서 UseGuard를 추가하면 디펜던시 에러가 나타납니다.
영상에서는 단순히 포스트 컨트롤러에서 @UseGuards(AccessTokenGuard)를 추가한 후 잘 작동하는 것 같은데 저는 디펜던시 에러가 나타나네요.. ERROR [ExceptionHandler] Nest can't resolve dependencies of the RefreshTokenGuard (?, UsersService). Please make sure that the argument AuthService at index [0] is available in the PostsModule context.디펜던시 에러 해결하는 강의를 다시 보고 포스트 모듈에서 필요한 부분들을 추가하여 해결은 했습니다. AuthService, UsersService와 JwtModule.register({}), UsersModel까지 추가해주니까 영상처럼 토큰을 보내줬을 때 포스트 기능이 잘 작동합니다.. 궁금한 것은 영상에서는 포스트 모듈에 별다른 수정 없이 단순히 포스트 컨트롤러에서 @UseGuards만 추가해도 잘 작동하는 것 같은데.. 저는 왜 포스트 모듈에서 필요한 부분을 추가해 주어야 했는지 모르겠네요.. 제가 놓친 부분이 있었을까요..? 감사합니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
이미 구매해서 문의에는 안써져서 여기에 물어봅니다
1. 배포에 관한 부분은 아직 없는 것 같은데 업데이트 중인가요? 아니면 Part2로 나눠서 나올까요?2. 강의 구매 인증을 하면 우선 답변을 받을 수 있는 채널로 초대하신다고 했는데 어디서 구매 인증을 해야 할까요?
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
마이크로 서비스를 사용하려고 하는데 질문이 있습니다.
tcp통신을 이용해서 마이크로 서비스를 만들고 있습니다.마이크로 서비스는 3000번으로 포트를 켜놨고,게이트웨이의 포트는 4000번으로 실행을 하게끔 해놨습니다.제가 우선 테스트를 위해서 user의 레포지토리에서 데이터를 전체 긁어오게끔 간단한 로직을 짜놨는데요. // 게이트웨이 컨트롤러 @Get("/users") @UseGuards() async GetUsers() { return this.organizationService.getUsers(); } // 게이트웨이 서비스 getUsers() { return this.clients.send("get:getUsers", {}); } // 마이크로 서비스 @MessagePattern({ cmd: "get:getUsers" }) async getUsers() { console.log("걸림"); return pipe( await this.userRepository.find({ relations: [ /* 관계 설정 */], }), (users) => ({ success: true, users: { users: users.map((user) => ( // 유저 정보들 ), }, }), ); }localhost:3000/api/users 경로로 요청 결과는 500에러가 나오고 콘솔에는[Nest] 3096 - 2023. 11. 16. 오후 2:45:20 ERROR [ExceptionsHandler] There is no matching message handler defined in the remote service.이렇게 메시지 핸들러가 일치하지 않다는데 대체 뭐가 잘못된건지를 모르겠습니다.메시지 패턴 이름도 같게 해놨는데 말이죠.
-
미해결따라하며 배우는 NestJS
컨트롤러에선 async/await 사용하지 않아도 되는 이유
서비스에서 async/await을 사용하는데컨트롤러에서는 사용하지 않아도 되는것이 의문입니다. express 환경에서는 컨트롤러까지 비동기처리를 해야데이터가 잘 넘겨졌던걸로 기억해서nestjs의 기능인가 싶어서 질문드립니다!
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
passport 관련해서 여쭙니다.
프론트쪽에서 워크스페이스 유저 초대를 하면서버쪽에서는 해당 기능을 요청한 유저가 워크스페이스 오너인지 체크하려고 합니다..AuthGuard를 확장한 OwnerAuthGuard에서 워크스페이스 레포지터리를 임포트해 db조회해서요청자가 owner인지 아닌 지 체크하려고 하는 데 passport의 패턴에 어긋나거나 성능상의 문제가 있을까요?공식문서나 구글링을 해보면 전부 jwt나 아이디, 비밀번호 체크하는 것만 있어서 확실치 않아 질문 드립니다.@Injectable() export class OwnerAuthGuard extends AuthGuard('owner') { async canActivate(context: ExecutionContext): Promise<boolean> { const can = await super.canActivate(context); console.log('LocalAuthGuard can:' + can); if (can) { const request = context.switchToHttp().getRequest(); //여기서 세션에 저장된 id로 workspace테이블을 조회 } return true; } }
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
테이블 관계
안녕하세요예를 들어 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해서 사용하는 건가요??