inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

15-02 API-GateWay 2

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요 수업을 잘 따라가고 있던 중 오류가 발생하였습니다... docker을 작동 하였고 아래와 같이 나와 도커를 확인 하였습니다. gatway제외한 나머지는 작동이 되는 걸 확인 하였고 gateway만 따로 작동을 하자 아래와 같이 에러가 발생하였습니다... 버전문제 때문에 그런건가요...??

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
뽕리뽕뽕 댓글 1 좋아요 0 조회수 631

안녕하세요 버전1과 버전2의 차이에서

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

cs적인 부분이 더 강화되고 장점이 더 많아 졌다는 것을 알게되었는데, 혹시 ver1부분과 ver2부분에서 elk스택에 대해서는 없는거 같은데 빠졌나요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
현종 댓글 1 좋아요 0 조회수 353

NotFoundException

미해결

따라하며 배우는 NestJS

컨트롤러와 서비스에 NotFoundException을 둘다 작성하셨는데 혹시 필요없는 로직이 아닌지 생각됩니다. 컨트롤러에서 데이터를 받았는데 서비스로 데이터가 안넘어 갈일은 없다고 생각되서요 꼭 필요한 코드인지 의문입니다.

  • postgresql
  • jwt
  • nestjs
  • typeorm
이지수 댓글 1 좋아요 0 조회수 719

수업과는 상관없지만 개발 순서와 완성도에 대해 질문드립니다!

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요! 저는 프론트수업과 백엔드 수업을 듣고 하나의 웹을 혼자서 만들어보려고 하는데요. 프론트부분과 백엔드 부분 중 어느 부분을 먼저 만들어야하는지 궁금합니다. 그리고 백엔드 개발자를 준비한다면 프론트 부분의 완성도가 어느정도여야 하는지도 궁금합니다. ( 포트폴리오 제출시 어필하기 위해서 ) 질문이 많이 모호해서 답변해주시기 어려울 것 같다는 생각이 드는데요, 혼자서 포트폴리오를 위해 웹을 제작하는 경우 어느정도까지 완성해야하는지가 궁금합니다.

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
김민규 댓글 1 좋아요 1 조회수 1226

ExceptionsHandler 에러가 발생합니다.

미해결

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

class-transformer 도 같이 설치후 요청을 날려보면 아래와 같은 의도하지 않은 에러미세지가 출력됩니다. { "statusCode": 500, "message": "Internal server error" } 또 동시에 터미널에 아래와 같은 에러 로그가 출력됩니다. [Nest] 8570 - 2023. 05. 27. 오전 10:48:03 ERROR [ExceptionsHandler] data and salt arguments required Error: data and salt arguments required at Object.hash (/Users/apple/Documents/sideProjects2/sleactNestJS/node_modules/bcrypt/bcrypt.js:137:17) at /Users/apple/Documents/sideProjects2/sleactNestJS/node_modules/bcrypt/promises.js:29:12 at new Promise (<anonymous>) at Object.module.exports.promise (/Users/apple/Documents/sideProjects2/sleactNestJS/node_modules/bcrypt/promises.js:20:12) at Object.hash (/Users/apple/Documents/sideProjects2/sleactNestJS/node_modules/bcrypt/bcrypt.js:133:25) at UsersService.postUsers (/Users/apple/Documents/sideProjects2/sleactNestJS/dist/main.js:426:55) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async UsersController.join (/Users/apple/Documents/sideProjects2/sleactNestJS/dist/main.js:1247:9) ChatGPT에 문의해보니 bcrypt에러 같다고 하는데, bcrypt는 수정하지 않았고 문제도 없어보입니다. 제가 강의를 보며 수정한 코드는 4군데 입니다. users.service.ts 에 기존 Exception 코드 날리기 async postUsers(email: string, nickname: string, password: string) { const user = await this.usersRepository.findOne({ where: { email } }); if (user) { throw new UnauthorizedException('이미 존재하는 사용자입니다'); } Users.ts entity에 Validation 추가하기 @IsEmail() @ApiProperty({ example: 'kim@gmail.com', description: '이메일', }) @Column('varchar', { name: 'email', unique: true, length: 30 }) email: string; @IsString() @IsNotEmpty() @Column('varchar', { name: 'nickname', length: 30 }) nickname: string; @IsString() @IsNotEmpty() @Column('varchar', { name: 'password', length: 100, select: false }) password: string; main.ts에 useGlobalPipes 꼽기 app.useGlobalPipes(new ValidationPipe()); httpException.filter.ts response status 수정하기 const err = exception.getResponse() as | { message: any; statusCode: number } | { error: string; statusCode: 400; message: string[] }; if (typeof err !== 'string' && err.statusCode === 400) { return response.status(status).json({ success: false, code: status, data: err.message, }); } response.status(status).json({ success: false, code: status, data: err.message, }); } } 공식문서도 보았는데, 해결이 안되어서 질문 남깁니다.

  • node.js
  • express
  • nestjs
  • typeorm
김의중 댓글 1 좋아요 0 조회수 1049

코드 오류 (06-03)

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

06-03 클래스 전략 패턴 수업에서 선생님과 코드를 똑같이 입력했는데 오류(공중 몬스터 not defined)가 납니다. 어떤 부분이 문제일까요? class 공중부품 { run = () => { console.log("날아서 도망가자!!"); } } class 지상부품 { run = () => { console.log("뛰어서 도망가자!!"); } } class Monster { power = 10; 부품; constructor(qqq){ this.부품 = qqq; } attack = () => { console.log("공격하자!!"); console.log("내 공격력은" + this.power + "야!!!"); }; run = () => { this.부품.run();class 공중부품 { run = () => { console.log("날아서 도망가자!!"); } } class 지상부품 { run = () => { console.log("뛰어서 도망가자!!"); } } class Monster { power = 10; 부품; constructor(qqq){ this.부품 = qqq; } attack = () => { console.log("공격하자!!"); console.log("내 공격력은" + this.power + "야!! }; } const mymonster1 = new Monster(new 공중부품()); mymonster1.attack(); mymonster1.run(); const mymonster2 = new Monster(new 지상부품()); mymonster2.attack(); mymonster2.run();

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
SW 댓글 1 좋아요 0 조회수 405

date를 인식 못하는 문제

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

엔티티 @Entity() @ObjectType() export class Reservation { @PrimaryGeneratedColumn('uuid') @Field(() => String) reservationId: string; @Column({ nullable: false }) @Field(() => Date) startDate: Date; @Column({ nullable: false }) @Field(() => Date) endDate: Date; @Column({ nullable: false }) @Field(() => Int) usersNumber: number; @Column({ nullable: false }) @Field(() => Int) lengthOfStay: number; @Column({ nullable: false }) @Field(() => Int) price: number; @ManyToOne(() => Member) @JoinColumn({ name: 'memberId' }) @Field(() => Member) member: Member; @ManyToOne(() => Campground) @JoinColumn({ name: 'campgroundId' }) @Field(() => Campground) campground: Campground; @ManyToOne(() => Tent) @JoinColumn({ name: 'tentId' }) @Field(() => Tent) tent: Tent; @DeleteDateColumn() deletedAt: Date; } 데이터 생성 DTO @InputType() export class CreateReservationInput extends OmitType( Reservation, ['reservationId', 'member', 'campground', 'tent'], InputType, ) { @Field(() => String) memberId: string; @Field(() => String) campgroundId: string; @Field(() => String) tentId: string; } 위 코드에 graphQL 요청시 에러가 발생합니다. mutation { createReservation ( createReservationInput: { startDate: "2023-01-01" endDate: "2023-06-06" usersNumber: 5 lengthOfStay: 10 price: 5 memberId: "lhw3542" campgroundId: "d35d3972-5c07-47d7-94a2-23c784f0a27e" tentId: "3ae33a7c-c898-4b66-b110-02b4f8c96398" } ) { reservationId startDate endDate usersNumber lengthOfStay price member { memberId } campground { campgroundId } tent { tentId } } } Field 'startDate' doesn't have a default value 날짜 형식을 읽지 못하는 것 같은데 무엇이 잘못된 걸까요? 아래와 같이 DTO에 직접 써줘도 인식을 못하고 있습니다. @Field(() => Date) startDate: Date; @Field(() => Date) endDate: Date;

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
댓글 1 좋아요 0 조회수 349

join한 테이블 조회시 컬럼이 겹치는 문제

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

아래와 같은 코드에서 memberID를 조건으로 데이터를 조회하면 join된 campground와 member 각각에 member 컬럼이 다 있어 조건으로 넣어준 memberId를 어디서 찾아야 하는지 typeORM에서 인식하지 못하는 것 같습니다. 때문에 아래와 같은 에러가 나오는거 같습니다. 어떻게 해결해야 할까요? result = await this.dibsRepository.find({ where: { member: { memberId }, }, relations: ['campground', 'member'], }); QueryFailedError: Column 'memberId' in where clause is ambiguous

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
Haewoong Lee 댓글 1 좋아요 0 조회수 284

도와주세요 ㅠㅠ!!

미해결

따라하며 배우는 NestJS

안녕하세요. 현재 typeorm 버전을 0.2로 낮춰서 진행하려고 했지만, 아래 오류가 발생하여 진도를 나가지 못하고 있습니다! 왜 자꾸 파이프를 못 찾는다고 나오는지 검색해도 안되서 글 등록합니다 ㅠㅠ 도와주세요! [Nest] 19044 - 2023. 05. 25. 오후 10:31:03 ERROR [ExceptionHandler] Cannot read properties of undefined (reading '__pipes__') TypeError: Cannot read properties of undefined (reading '__pipes__') at C:\nestStudy\nestjs-board-new-app\node_modules\@nestjs\core\scanner.js:147:152 at Array.forEach (<anonymous>) at C:\nestStudy\nestjs-board-new-app\node_modules\@nestjs\core\scanner.js:147:39 at Array.forEach (<anonymous>) at DependenciesScanner.reflectInjectables (C:\nestStudy\nestjs-board-new-app\node_modules\@nestjs\core\scanner.js:146:27) at DependenciesScanner.reflectDynamicMetadata (C:\nestStudy\nestjs-board-new-app\node_modules\@nestjs\core\scanner.js:124:14) at C:\nestStudy\nestjs-board-new-app\node_modules\@nestjs\core\scanner.js:114:18 at Array.forEach (<anonymous>) at DependenciesScanner.reflectControllers (C:\nestStudy\nestjs-board-new-app\node_modules\@nestjs\core\scanner.js:112:21) at DependenciesScanner.scanModulesForDependencies (C:\nestStudy\nestjs-board-new-app\node_modules\@nestjs\core\scanner.js:84:18)

  • postgresql
  • jwt
  • nestjs
  • typeorm
하리 댓글 2 좋아요 0 조회수 1103

08-05 강의에서 DB 접근이 안되는 현상이 발생합니다.

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

위와 같은 연결 오류가 발생하고 이때 host는 ' localhost ' 로 입력을 한 상태입니다. app.module.ts 파일 내의 host를 127.0.0.1 로 변경하면 또 정상 작동 합니다. 인터넷을 보니까 socketPath: '/tmp/mysql.sock' 를 마지막에 넣어주면 또 정상 작동 하는 것 같습니다. 도서관과 같은 특수한 네트워크 환경에서 진행해서 그런걸까요? https://cloer.tistory.com/56 자료를 참고했습니다.

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
박상준 댓글 1 좋아요 0 조회수 420

nestjs에서 DB에 데이터를 주입한 이후에 다시 서버를 작동시키고자 할때 발생하는 에러에 대한 문의점

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

ORM으로 API 구현중에 서버 작동을 위해 yarn start:dev로 진행하던중에 DB에 데이터를 주입한 이후에 서버를 다시 작동하게 되는 경우에 위 이미지와 같은 에러들이 발생하게됩니다. DB에서 어떠한 변화가 일어나고 난 다음에 새롭게 서버를 작동시키게 되면 기존과 다른 상태(?)에서 서버가 작동되는것때문에 오류가 발생하는게 아닐까 라는 추측을 하게되는데요 이는 어떠한 문제가 있어서 그런것이고 이걸 해결하기 위해서는 어떠한 방향성을 갖고 DB연결 이후에 데이터를 주입한 이후에도 정상적으로 서버를 연결할 수 있을까요?! 아직 강의가 다 끝나지는 않았지만 다음 강의에 설명들이 나와있는지도 궁금합니다 !

  • nestjs
zeler1004 댓글 1 좋아요 0 조회수 640

find가 빈 값을 반환하는 문제

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요~ 프로젝트 만들다보니 질문거리가 많아지네요. @Query(() => [Dibs]) fetchDibs( @Args('findDibsInput') findDibsInput: FindDibsInput, ): Promise<Dibs[]> { return this.dibsService.find(findDibsInput); } async find(findDibsInput: FindDibsInput): Promise<Dibs[]> { const { campgroundId, memberId } = findDibsInput; const result = await this.dibsRepository.find({ where: { campground: { campgroundId }, member: { memberId }, }, }); return result; } 위 코드에 아래와 같은 graphQL 요청을 하면 아무런 값도 돌아오지 않습니다. query { fetchDibs( findDibsInput: { campgroundId: "845b4bac-e0d9-4d1e-a897-9859275e9948" memberId: "lhw3542" } ) { campground{ campgroundId campName } member { memberId } } } { "data": { "fetchDibs": [] } } 조건식 인식 자체가 제대로 되지 않고 있는거 같은데 또 오류는 안나오네요. 어떤 것이 문제일까요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
Haewoong Lee 댓글 1 좋아요 0 조회수 225

auth.service.ts에서 오류가 납니다

미해결

따라하며 배우는 NestJS

auth.service.ts username에서 에러가 납니다. 에러내용은 다음과 같습니다. { username: string; }' 형식의 인수는 'FindOneOptions<User>' 형식의 매개 변수에 할당될 수 없습니다. 개체 리터럴은 알려진 속성만 지정할 수 있으며 'FindOneOptions<User>' 형식에 'username'이(가) 없습니다.ts(2345)

  • postgresql
  • jwt
  • nestjs
  • typeorm
whippersnapper 댓글 2 좋아요 0 조회수 985

jwt활용한 로그아웃

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

혹시 로그아웃에 대한 구현은 어떤식으로 해야할까요? header에서 토큰을 제거하는 거 말고 어떤 방식으로 토큰을 무효화 할까요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
yskim 댓글 1 좋아요 0 조회수 1912

복합키 설정 관련 질문

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요. 항상 친절하고 상세한 답변 감사합니다. 복합키 생성 관련 오류가 있어 질문드립니다. @Entity() @ObjectType() export class Dibs { @ManyToOne(() => Member) @PrimaryColumn() @JoinColumn({ name: 'memberId' }) @Field(() => Member) member: Member; @ManyToOne(() => Campground) @PrimaryColumn() @JoinColumn({ name: 'campgroundId' }) @Field(() => Campground) campground: Campground; @DeleteDateColumn() deletedAt: Date; } 위와 같이 member와 campground의 id를 복합키로하여 Dibs라는 테이블을 생성하려고 합니다. 그런데 아래와 같은 오류가 발생했습니다. [Nest] 21844 - 2023. 05. 24. 오전 9:36:44 ERROR [ExceptionHandler] Data type "Member" in "Dibs.member" is not supported by "mysql" database. DataTypeNotSupportedError: Data type "Member" in "Dibs.member" is not supported by "mysql" database. 그런데 해당 코드를 아래와 같이 고치면 또 정상작동하게 됩니다. @Entity() @ObjectType() export class Dibs { @ManyToOne(() => Member) @PrimaryColumn() @JoinColumn({ name: 'memberId' }) @Field(() => Member) memberId: Member; @ManyToOne(() => Campground) @PrimaryColumn() @JoinColumn({ name: 'campgroundId' }) @Field(() => Campground) campgroundId: Campground; @DeleteDateColumn() deletedAt: Date; } member -> memberId, campground -> campgroundId 라고 변수명만 바꿨을 뿐인데 정상작동하는 이유를 모르겠네요. member와 campground의 기본키가 각각 memberId와 campgroundId로 설정되어 있긴 합니다. 최종적으로 아래와 같이 구현했습니다. @Entity() @ObjectType() export class Dibs { @ManyToOne(() => Member) @PrimaryColumn() @JoinColumn({ name: 'memberId' }) @Field(() => String) memberId: string; @ManyToOne(() => Campground) @PrimaryColumn() @JoinColumn({ name: 'campgroundId' }) @Field(() => String) campgroundId: string; @DeleteDateColumn() deletedAt: Date; } 위 코드도 문제없이 잘 작동합니다. 그런데 애초에 복합키를 설정하는 것이 안 좋은 것일까요? 외래키 두개로 각 레코드들이 고유하게 구분될 수 있기 때문에 따로 기본키를 설정하지 않았는데 기본키를 설정하는게 더 좋은 방법일까요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
Haewoong Lee 댓글 1 좋아요 0 조회수 359

프론트에서 원하는 데이터를 찾을 때

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

section29까지 듣고 현재 제 프로젝트를 구축하고 있습니다. 그런데 궁금한 것이 이제까지 수업에서는 데이터를 찾을 때 고유 id를 가지고 findOne 메서드를 이용해서 데이터를 찾거나 find 메서드로 전체 데이터를 다 긁어오는 방식을 사용했습니다. 하지만 프론트에서는 특정 조건을 충족하는 데이터만 찾고 싶은 경우가 많을텐데요. 이를 위해서 해당 조건을 찾을 수 있는 query를 다 만들어주어야 하는지 아니면 find로 데이터를 모두 취합해서 들고오면 프론트에서 알아서 원하는 데이터를 찾는 방식으로 구현되는 것이 맞는건지 궁금합니다.

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
Haewoong Lee 댓글 1 좋아요 0 조회수 353

외래키 지정에 관해서

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

@ManyToOne(() => ProductCategory) @Field(() => ProductCategory) productCategory: ProductCategory; 외래키를 위와 같이 지정해주는 경우와 @ManyToOne(() => ProductCategory) @Field(() => String) productCategoryId: string; 이렇게 지정해주는 경우 데이터베이스에 테이블 사이의 관계가 만들어질 때 차이는 없나요? typeORM과 graphQL 요청시 객체를 그대로 전달하느냐 아니면 string 형식의 id만 전달하느냐 정도의 차이만 있나요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
Haewoong Lee 댓글 1 좋아요 0 조회수 250

08-02 강의에 설치해야될 패키지가 더 생긴건가요?

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

강의 중간에 yarn으로 패키지 설치하는 부분이 있는데 강의에 나와있는 3개의 패키지 말고 @apollo/server를 따로 설치해줘야 하는 것 같습니다. 뭔가 바뀐건가요? 일단은 이렇게 해서 넘어 가긴 했습니다

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
박상준 댓글 1 좋아요 0 조회수 447

section 29 수업과 관련해서 질문드립니다!

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요 선생님. 재접속시 column이 삭제되는 문제는 버전을 낮추니 해결되었습니다! 다만 app.module.ts 에서 @Module decorator 설정 중 entities: [] 부분에 glob path 설정이 안돼서 버전과 관련된 것인지 궁금해서 질문드립니다! ( glob path만 입력했을 때 entity를 읽지 못해 직접 입력해주니 해결되었습니다) ( 아직 실력이 부족해 질문이 상세하지 못한 점 양해 부탁드립니다. )

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
김민규 댓글 1 좋아요 0 조회수 342

데이터 수정에 관하여

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

수업에서는 product 테이블을 생성할 때 연관된 테이블의 데이터도 한번에 만들 수 있도록 구현하였습니다. 그렇다면 데이터 수정도 product의 mutation 요청으로 연관 테이블들의 데이터도 모두 수정할 수 있도록 구현해야 하나요? 이렇게 하려니 product 업데이트를 위해 입력해야 하는 데이터가 너무 많아지고 연관된 테이블의 데이터를 수정하는 경우에 create처럼 연관된 테이블의 컬럼의 데이터를 하나하나 다시 다 지정해줘야 하는 불편함도 있습니다. 이렇게 한방에 처리하는거 말고 일단 product update mutation에는 product의 본래 컬럼들만 수정할 수 있도록 처리하고 연관된 테이블의 데이터는 연관 테이블의 기본키로 해당 테이블들의 update mutation으로 처리해도 될까요? 일단은 연관된 테이블의 기본키를 product의 fetchProduct로 조회하고 찾은 키를 이용해서 연관 테이블의 데이터를 수정하는 방식입니다. 어떤 구조가 올바른 방식일까요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
Haewoong Lee 댓글 1 좋아요 0 조회수 340

인기 태그

인프런 TOP Writers

주간 인기글