inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

08-06 Docker 패키징

entity.ts파일의 class 데이터 타입지정안됨 오류

해결된 질문

230

jay kang

작성한 질문수 10

0

 entity.ts파일에서 input으로 사용할 틀을 resolver에서 Mutation쪽 service의 매개변수로 넘겨줄려고 사용했는데

Argument of type '{ inputStarbucks: InputStarbucks; }' is not assignable to parameter of type 'InputStarbucks'

이러한 오류가 나서 찾아보니 해당 타입으로는 변수타입을

지정할수없어서 변경하라고했는데

class틀도 문제가 없는데 왜 오류가 나는지 잘모르겠습니다.

import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { StarbucksService } from './starbucks.service';
import { InputStarbucks } from './entities/starbucks.input';
import { Starbucks } from './entities/starbucks.entity';

@Resolver()
export class StarbucksResolver {
  constructor(
    private readonly starbucksService: StarbucksService, // prettier때문에 아래로 내려쓰기가 안되니까 주석달기
  ) {}
  @Query(() => [Starbucks], { nullable: true })
  // graphql에서는 배열을 [Board]식으로 사용 아래에서는 Board[]라고 사용했는데
  fetchBoards(): Starbucks[] {
    return this.starbucksService.findAll();
  }

  @Mutation(() => String)
  creatBoard(
    // 한번에 사용하는 방식
    @Args('inputStarbucks') inputStarbucks: InputStarbucks,
    // graphql에서 데이터를 입력받고 변수명과 타입을 지정
    // graphql에서 writer로 입력받은값을 writer라는 변수에 받고 데이터 타입은 string으로 지정
  ): string {
    return this.starbucksService.create({ inputStarbucks });
    // return을 작성해야 사용한 api쪽 리턴이 module쪽까지 전달됨
  }
}
import { Injectable, Scope } from '@nestjs/common';
import { Starbucks } from './entities/starbucks.entity';
import { InputStarbucks } from './entities/starbucks.input';

@Injectable({ scope: Scope.DEFAULT })
export class StarbucksService {
  findAll(): Starbucks[] {
    // entity에서 만든 Board의 배열형태를 가져와서 사용
    const result = [
      { number: 1, writer: '짱구', title: '제목', contents: '내용이요' },
      { number: 2, writer: '짱구2', title: '제목2', contents: '내용이요2' },
      { number: 3, writer: '짱구3', title: '제목3', contents: '내용이요3' },
    ];
    return result;
  }

  create({ inputStarbucks }: InputStarbucks): string {
    console.log(inputStarbucks.writer); // 데이터 타입의 클래스의 명과 동일해야한다 .writer이부분이
    console.log(inputStarbucks.title);
    console.log(inputStarbucks.contents);
    return '게시물 등록 성공';
  }
}
import { Field, InputType } from '@nestjs/graphql';

// @ObjectType() // 이렇게 작성하면 type으로 나옴 . 리턴타입이 type이었을때
// mutation의 경우에는 input으로 작성했다
@InputType()
export class InputStarbucks {
  @Field(() => String)
  writer: string;

  @Field(() => String)
  title: string;

  @Field(() => String)
  contents: string;
}
// Graphql에서 사용하기위해서 graphql 데이터 타입지정

javascript node.js express docker tdd rest-api nestjs

답변 1

0

노원두

안녕하세요! Daon님!

해당 스크린샷의 2번째 화면을 보니, { inputStarbucks }: InputStarbucks 로 타입을 지정하셨네요!

create({ inputStarbucks }: InputStarbucks): string {
    console.log(inputStarbucks.writer); // 데이터 타입의 클래스의 명과 동일해야한다 .writer이부분이
    console.log(inputStarbucks.title);
    console.log(inputStarbucks.contents);
    return '게시물 등록 성공';
  }

inputStarbucks의 타입이 InputStarbucks이므로,
inputStarbucks: InputStarbucks 와 같이 지정되어야합니다.(중괄호가 빠져야겠죠?!)

만약, 중괄호를 추가하고 싶으시다면,
{ inputStarbucks }: { inputStarbucks: InputStarbucks } 와 같이 지정되어야해요!
쉽게 이야기하면, ":"을 기준으로 왼쪽과 오른쪽의 구조가 동일해야합니다!

그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?

0

84

2

강의 전체 소스 코드를 받고싶습니다.

0

76

2

fontawesome 사용 문의

0

79

2

소스 코드 부탁드립니다~

0

85

2

깃 레포지터리 소스

0

87

2

커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요

0

74

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

89

3

강의 버전관련 문의입니다

0

103

2

Ubuntu 설치 관련

0

61

1

schema.gql 질문 드립니다.

0

51

1

서버 재실행시 Many to Many

0

102

3

input 관련 문의

0

90

2

Rest API 보다는 graphql이 주된 내용인데

0

131

2

강의 전체 소스코드 받을수있을까요?

0

156

1

도커볼륨 마운트 관련

0

127

2

findOne 타입스크립트오류

0

109

1

http => htrtps 호출 인증서 신뢰 오류

0

354

1

self-signed certificate in certificate chain 에러 발생

0

417

1

mongoose 설치 오류

0

142

1

특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)

0

283

2

08-06

0

180

3

구조랑 패턴 관련해서 질문

0

125

2

mydocker

0

128

2

coolsms statuscode 2000 인데 전송안돼는 경우 확인.

0

156

1