구현은 끝나서 swagger 만들고 있는데, 계속 swagger가 보내는 json을 못찾는것같습니다. request의 body에도 아무 값이 안나오네요. 도와주세요ㅠㅠ API 코드 app.post("/users", async (req, res) => { const newUser = req.body.newUser; // 여기에서 오류가 납니다. if ((await isAuthPhone(newUser.phone)) === true) { if (checkValidationEmail(newUser.email) === true) { const og = await makeOG(newUser.prefer); console.log(og); const securePersonal = secure(newUser.personal); const user = new UserCollection({ name: newUser.name, email: newUser.email, personal: securePersonal, prefer: newUser.prefer, pwd: newUser.pwd, phone: newUser.phone, og: og, }); await user.save(); await sendWelcomeTemplateToEmail(newUser); console.log( `✅: "${user.name}" 사용자가 신규 가입에 성공했습니다.` ); res.send(user._id); } else { res.status(422).send("NotValidationEmail"); } } else { res.status(422).send("NotAuthPhone"); } }); Swagger 코드 (yaml 파일은 복붙하니까 이상하게 나와서 이미지로 첨부할게요) (+ 이미지에선 parameter의 name이 body로 되어있지만, 위 API 코드에 맞춰서 name을 newUser로 설정했었지만 같은 에러가 떴었습니다.) 에러 메시지 Swagger parameter 화면 아무리 찾아도 방법을 모르겠어서 올립니다ㅠㅠ.... 도와주세요.....
강의대로 따라 했으나, 아래와같은 오류 나는경우 해결법 입니다. ERROR [ExceptionsHandler] Schema hasn't been registered for model "comments". Use mongoose.model(name, schema) 다른 문의글 보면 답변으로 버전 문제라고 버전을 내리라고 하시는데 , 좀 이상한 답변이라는 생각에 진짜 몇시간동안 헤매다가 해결했습니다. 현재기준 최신버전 "@nestjs/common": "^9.0.0", "@nestjs/mongoose": "^9.2.1", "mongoose": "^6.9.0", 에서 아래와 같이 해결 했습니다. 주석참조. export class CatsRepository { constructor( @InjectModel(Cat.name) private readonly catModel: Model<Cat>, // 해당 라인 추가, 참고로 강의에선 Comments 인데 저는 Cat과 같이 단수형으로 만들어서 Comment 입니다. @InjectModel(Comment.name) private readonly commentModel: Model<Comment>, ) {} async findAll() { const result = await this.catModel .find() // populate 파라미터 변경 .populate({ path: 'comments', model: this.commentModel }); return result; } ... } 다른 누군가에게 도움이 되기를
windows에서 vscode에서 typescript를 사용하시다 보면 아래와 같이 delete 'cr'이라고 계속 빨간 글씨가 떠서 눈에 거슬리는 경우가 있습니다. 해결책 : eslintrc.js파일에 가셔서 아래와 같이 rules에 추가한 후 저장해 주시면 됩니다. 긁어서 eslintrc.js파일의 하단의 rules에 추가해 주세요 'prettier/prettier': [ 'error', { endOfLine: 'auto', }, ],
현재 puppeteer-crawling해서 스타벅스메뉴와 이미지는 잘 긁어 왔는데요. 자꾸 MongoDB에 저장되어 있는 img를 불러올 때 에러가 발생하는데, 성공하신 분 있나요? 스키마에서 이미지 형식을 Buffer 했습니다. import mongoose from "mongoose"; const StarbucksSchema = new mongoose.Schema({ name: String, img: Buffer, }); export const Starbucks = mongoose.model("Starbucks", StarbucksSchema); //이미지 URL로부터 이미지 다운로드 if (!fs.existsSync("img_crawling")) { fs.mkdirSync("img_crawling"); } let fileName = `img_crawling/${menuName}.jpg`; request(menuImage).pipe(fs.createWriteStream(fileName)); console.log(`이미지 ${fileName} 저장 완료`); 저는 fs모듈과 request모듈을 추가로 사용했는데, 이미지의 주소를 MongDB에 저장하고, 이미지는 별도의 폴더에 저장되게 만들었습니다. 질문 요약 1. MongDB에 이미지 저장할 때 fs라이브러리와 request라이브러리를 사용하게 맞나요? 2. 이미지를 저장은 잘 됐는데, 화면에 뿌려 줄려고 하는데 자꾸 에러가 나요. 3.몽고DB에 접속해서 이미지 주소를 가져와서, 그 주소를 기반으로 뿌려줘야 되는지 4.아니면 몽고DB에 접속해서 그 메타주소(?)를 기반으로 현재 컴퓨터에 저장된 이미지를 화면에 뿌려줘야 하는지 자꾸 구글링하면 몽고DB에 이미지파일을 직접적으로 저장하는 것은 DB에 무리를 일으킨다. 그래서 어떠한 라이브러리를 사용해서 DB에는 메타주소(?)만을 저장하고, 이미지파일을 별도의 localStorage에 저장한다. 또한 이미지를 그냥 가져(load) 올 수 없어서 인코딩을 해줘야 한다. 뭔 말인지 모르겠어요 ㅠ.ㅠ
안녕하세요. 강의 잘 봤습니다! 강의 내용 관련된 질문은 아니지만..답답해서요ㅜㅠ 저는 코딩 공부를 시작한 지 2개월정도 된 완전 코린이입니다..! 원래 처음엔 이해가 안되고 어려운 게 맞겠죠..?ㅠ코딩하면서 에러 뜰때마다 원인도 모르겠어서 몇시간 붙잡고 있던 적도 많고 개념 이해하기도 어려운데 ...지식공유자님은 처음에 어떤식으로 공부하셨는지 궁금합니다!! ㅠ
여러 방면으로 시도 중인데, error_code : "NOT_READY" error_msg : "등록된 사용자가 아니거나, 아임포트 관리자 페이지에 설정된 PG정보가 없습니다." 해당 에러가 뜨면서 계속 실패하네요;; 혹시 하신 분들은 어떻게 성공하셨는지 궁금합니다. 일단 제가 예상한 것으로는 강의 화면이랑 제 구 관리자콘솔의 시스템 관리 탭이 다른 점에 눈이 가는데, 이걸 어떻게 처리해야되는지 어디를 찾아봐도 안나오네요... 강의에서는 여러 탭이 있는데 저는 두 개의 탭 밖에 보이지 않습니다. 해결 방법을 찾고 싶어도 어디서 찾아야 되는 지 감이 안잡히네요
강사님 좋은 강의 고맙습니다 스프링에서 빌더패턴을 써봤는데 네스트에서도 빌더패턴을 적용하는 방법을 알게 됐네요 강의 마지막 부분에서 service단에서도 DB와 통신할 때 빌더패턴을 이용할 수 있다고 말씀하셨는데 강사님께서 빌더를 적용하는 방법을 알고 싶습니다! 추가적으로 강의가 너무 만족스러워서 새로운 강의가 계속 업데이트 되면 좋겠네요
안녕하세요. 제가 찾고 기다리던 내용의 강의라 매우 만족하며 수강하고 있는 수강생입니다! ㅎ 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로 두고 사용할 수밖에 없는 것인지 아니면 타입 지정을 해서 사용하는 방법이 있는지 궁금합니다.
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 여기서 아래와 같은 오류가 뜨는데 어떤 상황인지 파악이 잘 되지가 않습니다. { "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 {}
#7-2 회원가입 기능구현에서 강의 내용 전체 작성 후 회원가입 진행하였는데, username과 password가 컨트롤러에서 console.log(authCredentialDto)를 찍으니 빈 객체만 내뱉고 있고 db에 정상적으로 저장이 되지 않았습니다. 이리저리 코드를 수정해보니. dto 구성 단게에서 validator import 후에 정상적으로 출력이 됩니다. 강의 영상에서는 문제 없이 되던데 왜 이렇게 되는지 궁금합니다.