묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
혹시 윈스턴으로 로거 저장하는 파트는 따로 없나요?
윈스턴이던뭐던 로그를 저장하는파트는 따로 없나요? 따라서 만들다보니 로그를 저장할 필요가 있을것같아서 시도중인데 nest는 방법을 잘 모르겠어서혹시 강의에 포함이된부분이있나해서요.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
M:N 등록/조회 API 작성에서 Typescript 문제 질문드립니다.
안녕하세요. 제가 찾고 기다리던 내용의 강의라 매우 만족하며 수강하고 있는 수강생입니다! ㅎproducts.service.ts 파일에서 create와 update 메서드 작성할 때 typescript 에러에 대해 질문드립니다.products.service.ts 파일 create 메서드에서 productTags를 등록하는 과정에const result2 = [] 부분을 const result2: string[]로 작성하면 await productRepository.save(...) 에서 No overload matches this call이 뜨고update 메서드에서 updateProductInput에 UpdateProductInput로 타입을 지정하면 위와 마찬가지로 await productRepository.save(newProduct)에서 No overload matches this call이 뜹니다.두 경우 모두 Type 'string' is not assignable to type 'ProductTag' 문제로 product.entity.ts에서는 productTag를 아래와 같이 등록하고 @Field(() => [ProductTag]) @JoinTable() @ManyToMany(() => ProductTag, (productTags) => productTags.products) productTags: ProductTag[]; createProduct.input.ts에서는 CreateProductInput에서 productTag를 아래와 같이 등록해서 발생하는 문제라고 추측했습니다.@Field(() => [String]) productTags: string[];두 경우 모두 타입을 지정하지 않고 any로 두면 문제는 사라지긴 합니다. any로 두고 사용할 수밖에 없는 것인지 아니면 타입 지정을 해서 사용하는 방법이 있는지 궁금합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
mysql 데이터베이스 연결 안되는 문제 Unable to connect to the database
yarn start:dev 실행 하고 나면 아래와 같이 나오면서 에러가 뜨고 있어요 ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...아래 코드도 정상적으로 기입 했는데, 계속 접속 오류로 연결이 되지가 않습니다.import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo' import { Module } from '@nestjs/common' import { GraphQLModule } from '@nestjs/graphql' import { TypeOrmModule } from '@nestjs/typeorm' import { BoardsModule } from './apis/boards/boards.module' import { Board } from './apis/boards/entities/board.entity' @Module({ imports: [ BoardsModule, GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, autoSchemaFile: 'src/commons/graphql/schema.gql', }), TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: 'test1234', database: 'myproject03', entities: [Board], synchronize: true, logging: true, }), ], // controllers: [AppController], // providers: [AppService], }) export class AppModule {} 현재 brew 확인시 Mysql 서버도 정상적으로 켜져 있는것을 확인 할 수 있어요 디비버에서도myproject03 이라고 정확하게 만들었습니다.선생님의 강의하고 다른부분을 못 찾았는데,데이터 베이스가 연결이 안될 때는 어느부분을 더 점검 해 봐야 할지요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
http://localhost:3000/graphql 실행 후 query > getHello 시 오류
http://localhost:3000/graphql 실행 후 query > getHello 시 오류가 있습니다.코드는 오타 없이 동일 한데, 저는 실행시 http://localhost:3000/graphql 여기서 아래와 같은 오류가 뜨는데 어떤 상황인지 파악이 잘 되지가 않습니다.{ "errors": [ { "message": "Cannot return null for non-nullable field Query.getHello.", "locations": [ { "line": 2, "column": 3 } ], "path": [ "getHello" ], "extensions": { "code": "INTERNAL_SERVER_ERROR", "exception": { "stacktrace": [ "Error: Cannot return null for non-nullable field Query.getHello.", " at completeValue (/Users/back/study/20230119_nestjs/class/13-01-nestjs-with-graphql/node_modules/graphql/execution/execute.js:594:13)", " at /Users/back/study/20230119_nestjs/class/13-01-nestjs-with-graphql/node_modules/graphql/execution/execute.js:486:9", " at processTicksAndRejections (node:internal/process/task_queues:95:5)", " at async Promise.all (index 0)", " at execute (/Users/back/study/20230119_nestjs/class/13-01-nestjs-with-graphql/node_modules/apollo-server-core/src/requestPipeline.ts:501:14)", " at processGraphQLRequest (/Users/back/study/20230119_nestjs/class/13-01-nestjs-with-graphql/node_modules/apollo-server-core/src/requestPipeline.ts:407:22)", " at processHTTPRequest (/Users/back/study/20230119_nestjs/class/13-01-nestjs-with-graphql/node_modules/apollo-server-core/src/runHttpQuery.ts:436:24)" ] } } } ], "data": null } app.module.ts 에도 정상적으로 연결 해 두었습니다.import { Module } from '@nestjs/common' // import { AppController } from './app.controller'; // import { AppService } from './app.service'; import { BoardsModule } from './apis/boards/boards.module' import { GraphQLModule } from '@nestjs/graphql' import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo' @Module({ imports: [ BoardsModule, GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, autoSchemaFile: 'src/commons/graphql/schema.gql', }), ], // controllers: [AppController], // providers: [AppService], }) export class AppModule {}
-
미해결따라하며 배우는 NestJS
회원가입 기능 구현
#7-2 회원가입 기능구현에서 강의 내용 전체 작성 후 회원가입 진행하였는데, username과 password가 컨트롤러에서 console.log(authCredentialDto)를 찍으니 빈 객체만 내뱉고 있고 db에 정상적으로 저장이 되지 않았습니다. 이리저리 코드를 수정해보니.dto 구성 단게에서 validator import 후에 정상적으로 출력이 됩니다. 강의 영상에서는 문제 없이 되던데 왜 이렇게 되는지 궁금합니다.
-
미해결Node.js의 모든 것
2023년 버전이 추가되어도 강의 순서에는 변함이 없는지 궁금합니다!
안녕하세요, 우선 2023년도 버전 강의 업데이트에 감사하다는 말씀부터 드리고 싶습니다. 2022년도 버전만큼을 새로 찍어서 올려주시다니... 새해부터 마음이 뜨끈해지네요.다른게 아니라, 언뜻 보기엔 섹션 6(prisma 쿼리 알아보기)이 Prisma에 대한 기본적인 개념을 잡는 섹션으로 보이는데 2023년도 강의 버전이 업데이트되면서 우선 PG실습부터 하는 순서로 변경된 것 같습니다. 이게 강사님께서 의도하시고, 또 추천하시는 수강 순서가 맞는지 궁금합니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
건의사항
제가 잘못 본건지는 모르겠지만,Node.js API구현 중 퍼사드 패턴 47:31초에서function getToken() { const myconunt =6 if(mycount === undefined){ console.log("에러발생!!! 갯수를 제대로 입력해주세요!!!") return ~~~}좌측 인강화면을 보시면 01-04-token-count-api-facade 폴더에 들어있는index.js파일에서 function getToken() 함수에서 매개변수를 지우고, const mycount = 6 으로 대체하였습니다. 하지만, 우측 노션에 학습자료 퍼사드 패턴에서는 function getToken(count) { ~~} 라고 해서 count매개 변수가 존재합니다.count를 여전히 매개변수로 사용하고 있습니다. 즉 "노션에 있는 자료가 수정되어야 한다고 생각합니다."노션 자료 중 호출하는 부분에서 createTokenOfPhone('01012345678', 6);매개변수 6도 삭제되어야 합니다. "REST-API 실습 강의"에서 postman으로 학습시 "휴대폰 번호 전송"이 안되서 순간적으로 당황했습니다.확인하시고, 답글 달아주시면 감사하겠습니다.해당강의는 Node.js API구현 중 퍼사드 패턴 47:31초입니다. 노션은 학습 자료 / 퍼사드 패턴 입니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
수업중 나온 깃허브 저장소가 없는 이유
수업중 나온 깃허브 저장소가 없는 이유가 궁금합니다.현재 스크린샷처럼 되어 있는 주소가 없어요
-
미해결따라하며 배우는 NestJS
구현 완료 후 TypeError: this.userRepository.createUser is not a function
TypeError: this.userRepository.createUser is not a function포스트맨에서 localhost:3000/auth/signup실행시 서버가 터지며ㅑㄴ서TypeError: this.userRepository.createUser is not a function이런 에러를 내보내고 있는데, 아무리봐도 코드는 모두 똑같아서 무슨 문제인지 찾아지지가 않네요ㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
mongodb 설치에 문제가 있습니다.
현재 Ubuntu 운영체제를 듀얼부팅으로 22.04.01 버전으로 사용하고 있고, 강의를 듣기 위해 mongodb 설치를 진행하려고 합니다.그러나 현재 강의의 notion에서 올려주신 설치 과정을 그대로 진행했는데 6번 명령어를 실행 후 이와 같은 오류가 발생했습니다. 설치과정sudo apt-get install gnupgwget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -lsb_release -dcecho "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list (jammy버전이라 fosal에서 jammy로 변경했습니다.) +추가(jammy가 아닌 forsal로도 진행을 해 봤고, 6.0버전으로도 진행해봤는데 같은 에러가 떴습니다...)sudo apt-get updatesudo apt-get install -y mongodb-org 오류 메시지몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,아직 Incoming에서 나오지 않은 경우일 수도 있습니다.이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:다음 패키지의 의존성이 맞지 않습니다:mongodb-org-mongos : 의존: libssl1.1 (>= 1.1.1) 하지만 설치할 수 없습니다mongodb-org-server : 의존: libssl1.1 (>= 1.1.1) 하지만 설치할 수 없습니다mongodb-org-shell : 의존: libssl1.1 (>= 1.1.1) 하지만 설치할 수 없습니다E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다. 구글링 해본 결과 libssl1.1이 깔려있지 않아서 그렇다는 걸 확인했는데 우분투 22.04 버전은 libssl3이 이미 깔려있어 중복 설치는 좋은 해결 방법이 아니라는 것을 확인했습니다.그래서 또 다르게 설치할 수 있는 방법이 있을지 질문드립니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
MongoParseError: options usernewurlparser, userunifiedtopology are not supported
2023.01.05 기준몽고디비 설정할때, 기본으로 다 지원하기 때문에 추가 설정을 할 필요가 없다고 하네요!https://hyeon-gomi.tistory.com/6아래와 같이 그대로 놓는 것만으로 충분하다고 합니다MongooseModule.forRoot(process.env.MONGODB_URL),
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
타입을 지정해 줄 때
3번째 줄에서 app 위에 커서를 올려보면const app:Express 이런식으로 타입스크립트가 올바르게 추론해준 것을 알 수 있습니다.이런 경우에도 강의에서처럼const app: express.Express 이런식으로 작성하는 것이 더 나은 방법일까요?
-
미해결따라하며 배우는 NestJS
강의 잘들었습니다! 배포 자료 받을수있을까요?
안녕하세요. 강의 잘들었습니다. 감사합니다.그런데 마지막에보여주신 배포관련 pdf 볼수있을까요? 다른분이 질문해주신 답글https://drive.google.com/file/d/1z3QUaECsZ_bVHIUF-rYyDrNv_oCvR8re/view?usp=sharing여기에는 한장의 사진만 보여서요!
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
프론드엔드 파일 관련 질문드립니다! ( 오류 )
안녕하세요 고양이 CRUD 프로젝트 듣고있는 학생입니다. 프론트 엔드 파일을 받아서 npm i 후 서버를 키려 하는데 npm run build : 에러 미 발생 ( .next 파일에 아무것도 없어요 ㅠ)npm run start : npm run dev:이렇게 에러 메시지가 노출됩니다npm run dev의 에러메시지에 react 버전 업데이트 필요해 보여서 npm install react 하면은 package.json의 정해진 버전보다 상위로 올라가서 그런가 설치가 안되더라구요 ㅠㅠ 어떻게 하면 해결이 될까요 ㅠㅠ
-
미해결따라하며 배우는 NestJS
npm run start시 QueryFailedError: "username" 열의 자료 가운데 null 값이 있습니다. 에러가 발생합니다.
npm run start로 application을 실행시켰을 때QueryFailedError: "username" 열(해당 릴레이션 "user")의 자료 가운데 null 값이 있습니다에러가 발생합니다.DB 상태는 회원가입한 유저가 user 테이블에 존재합니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
database 생성
MongoDB가 업데이트가 되어서 DB생성시에 권한이 있어야지만 생성이 됩니다. 전 강좌에서 Mongodb Atlas 에서 사용자를 만들때 Database Access 에서 본인에게 권한을 주어야 Database 를 만들고 CollectionName 을 넣을 수 있습니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
채팅앱 만들기 - 이벤트 설계와 기본 서비스로직 완성 에서 질문 있습니다
function helloUser() { const username = prompt('What is your name?'); socket.emit('new_user', username, (data) => {drawHelloStranger(data);});}사용자가 처음 화면에 진입했을 때에 사용자가 이름을 입력하고 나면 ‘new_user’에 해당하는 게이트웨이 로직이 실행되는 것으로 알고 있습니다.이 로직 안에서 ‘user_connected’에 대해 브로드 캐스팅을 해주고 있는데요 socket.broadcast.emit('user_connected', username);프론트엔드에서 아래와 같이 connected!라는 채팅글도 화면에 나타나야 할 것 같은데socket.on('user_connected', (username) => { drawNewChat(`${username} connected!`);});화면 진입자 입장에서는 connected!부분이 나타나지 않습니다. 왜 그런지 설명해주실 수 있을까요? 화면 진입자 또한 위 코드를 수행하고 있는데화면 진입자를 제외한 나머지 사용자에게는 connected!가 나타나지만 화면 진입자는 나타나지 않는 이유가 궁금합니다.
-
미해결따라하며 배우는 NestJS
typeorm 0.3.x 버전 오류
많은 분들이 남겨준 것처럼 typeorm 0.3.x 버전 오류로 인해 저도 조금 고생했습니다.공식문서 참조하며 해결했습니다.https://docs.nestjs.com/techniques/database#repository-patterntypeorm 0.3.x 버전은 @EntityRepository 가 deprecated 됐기 때문에 custom Repository를 생성해주었습니다. custom Repository 생성은 아래 블로그를 참조했습니다.https://velog.io/@pk3669/typeorm-0.3.x-EntityRepository-%EB%8F%8C%EB%A0%A4%EC%A4%98위 링크 내용을 참조로 typeorm-ex.decorator.ts 파일과 typeorm-ex.module.ts 파일을 생성합니다.해당 링크가 문제가 될 시 링크 바로 삭제하도록 하겠습니다 ㅠ.. typeorm.config.tsentities를 불러오기 위해 경로 또는 저희가 설정한 entitiy를 바로 집어 넣었습니다.autoLoadEntities: true - entities를 빼고 해당 옵션을 넣어서 자동으로 불러올 수도 있습니다. (본인이 직접 컨트롤 하는 것이 아니기 때문에 부정확해질 수도 있음.)board.repository.ts저희 repository에 @EntityRepository 대신 CustomRepository(Board)을 넣어줍니다.board.module.tsimports는 custom Repository를 불러와야 하기 때문에, 저희가 만든 TypeOrmExModule class의 forCustomRepository에 저희 Repository를 넣어줍니다.board.service.ts기존에 @EntityRepository를 사용한 경우 @InjectRepository 데코레이터를 사용했지만 해당 부분을 유지하면 오류가 발생한다고 합니다.따라서 @CustomRepository를 생성하여 사용하는 경우 @InjectRepository를 제거하고 사용합니다. 이러면 아직 findOne 메소드의 id는 빨간줄인데findOne 메소드는 options로 FindOneOptions Parameter를 받게 되어 있고해당 FindOneOptions중 저희가 사용할 것은 where 옵션을 사용해야 해당 id를 통해 데이터를 불러올 수 있습니다.그래서 최종적으로 findOne 메소드는 아래 그림과 바꿔주면 해당 메소드를 사용할 수 있게 됩니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
안녕하세요! 예외처리 관련해서 질문드립니다!
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 안녕하세요. exception filter는 에러가 controller까지 전달이 되어야지 동작한다고 해주셨는데요! 일반적인 서비스 레이어의 코드라면 service 레이어에서 throw 한 에러가 controller까지 전달이 될 것 같은데요! trasaction 사용을 위해서 try / catch 문을 사용할 시 catch에서 잡힌 에러가 controller로 전달되지 않는 것을 확인했습니다! 이럴 경우에는 catch 에서 잡힌 에러를 그대로 다시 controller로 throw해주는 것이 괜찮은 방법인지 고민이 들어서 질문드립니다! 아래와 같이 처리하는 방법이 맞는지 혹은 조금 더 좋은 방법이 있는지 궁금합니다!example.service.tsasync testService() { const queryRunner = this.connection.createQueryRunner() .. 트랜잭션 스타트 try { ... 중략 } catch(error) { await queryRunner.rollback() throw error } }
-
미해결따라하며 배우는 NestJS
nested json을 dto로 전달하려면 어떻게 해야하나요?
1개의 json 객체 안에 프로퍼티가 다른 여러 객체들이 들어있는 리스트가 담겨있는 것을 dto로 전달하려면 어떻게 해야하나요?구글링해보니까 nested 인터페이스를 사용하기도 하던데,Entity는 일반적으로 class로 만드니까 nested class는 어떻게 생성하는지가 궁금합니다.그리고 제 목표는 저 json 인에 들어있는 2가지 종류의 객체( slider type과 selecrive type)를 1번의 post메소드로만 보내고 싶습니다. 그런데 아래처럼 두 객체의 프로퍼티가 다를때, 하나의service,controller,repository를 이용해서 전달하려면 어떻게 해야하나요?json 객체의 형태는 아래와 같습니다.{ "questions_count": 8, "results_slider": [ { "type": "slider", "main_criteria_id": 0, "main_criteria": "Mollit mollit qui sint irure do ad laborum quis ullamco eu dolor.", "sub_criterias": [ "Eu occaecat pariatur sunt duis amet in sint velit amet consequat deserunt.", "Culpa Lorem nisi ut ea irure et eu do cupidatat ipsum duis veniam elit." ], "results": [ { "sub_criteria_id": 0, "sub_criteria_score": 4.7748 }, { "sub_criteria_id": 1, "sub_criteria_score": 7.091 } ] }, { "type": "slider", "main_criteria_id": 1, "main_criteria": "Qui consequat ullamco aliquip Lorem minim commodo irure magna cillum.", "sub_criterias": [ "Velit eu ullamco id nisi quis consequat non non commodo aliquip qui mollit.", "In esse amet proident dolore do aliquip est deserunt commodo eu eiusmod cillum.", "Nisi laboris velit Lorem irure." ], "results": [ { "sub_criteria_id": 0, "sub_criteria_score": 8.1561 } ] } ], "results_selective": [ { "type": "selective", "selective_criteria_id": 0, "selective_criteria": "Aute veniam quis adipisicing sint est amet aliquip elit.", "results": [ { "option_id": 0, "option_score": 3 }, { "option_id": 1, "option_score": 4 }, { "option_id": 2, "option_score": 5 }, { "option_id": 3, "option_score": 2 } ] }, { "type": "selective", "selective_criteria_id": 1, "selective_criteria": "Ipsum culpa dolore ad culpa amet aute ad.", "results": [ { "option_id": 0, "option_score": 3 } ] } ]}