inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

08-06 Docker 패키징

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

해결된 질문

239

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 } 와 같이 지정되어야해요!
쉽게 이야기하면, ":"을 기준으로 왼쪽과 오른쪽의 구조가 동일해야합니다!

윈도우에서 Node js를 설치하고 싶어요

0

16

0

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

0

102

2

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

0

93

2

fontawesome 사용 문의

0

96

2

소스 코드 부탁드립니다~

0

99

2

깃 레포지터리 소스

0

96

2

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

0

81

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

102

3

강의 버전관련 문의입니다

0

111

2

Ubuntu 설치 관련

0

74

1

schema.gql 질문 드립니다.

0

63

1

서버 재실행시 Many to Many

0

120

3

input 관련 문의

0

97

2

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

0

145

2

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

0

170

1

도커볼륨 마운트 관련

0

136

2

findOne 타입스크립트오류

0

116

1

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

0

375

1

self-signed certificate in certificate chain 에러 발생

0

440

1

mongoose 설치 오류

0

149

1

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

0

300

2

08-06

0

188

3

구조랑 패턴 관련해서 질문

0

134

2

mydocker

0

135

2