728x90

ObjectType


NestJs의 ObjectType을 이해하기 쉽게 데이터베이스와 유사한 entity 를 만들겠습니다.

폴더 구조는 이전 글을 참고해주세요

restaurants.entity.ts 라는 파일을 만들어 주세요



ObjectType은 데코레이터로써 작동합니다.

GraphQL 의 관점에서 봤을때 Restaurant가 어떻게 생겼는지 묘사합니다.

// entity 란 데이터 베이스 모델을 생각하면 이해하기 쉽다.

import { Field, ObjectType } from '@nestjs/graphql';

// 아직 데이터베이스가 없어서 이해하기 쉽게 특징을 살펴본후 데이터 베이스를 추가할 예정
@ObjectType()
export class Restaurant {
  // Restaurant 를 위한 ObjectType 을 만들어 줍니다.
  @Field((type) => String)
  name: string;
  @Field((type) => Boolean, { nullable: true })
  isGood: boolean;
}

Field 데코레이터를 graphql 에서 import 합니다.

Field데코레이터의 인자로 들어가는것은 함수여야 합니다. 인자로 들어가는 type을 () 이렇게 쓰거나 is => String으로 써도 아무도 문제 없습니다.

entity 파일을 restaurants/restaurants.resolver.ts 파일에 import 합니다.

import { Resolver, Query } from '@nestjs/graphql';
import { Restaurant } from './entities/restaurant.entity';

@Resolver((of) => Restaurant)
export class RestaurantResolver {
  @Query((returns) => Restaurant)
  myRestaurant() {
    return true;
  }
}

Resolver 데코레이터에 entity 에서 export 한 Class를 리턴값으로 넘겨줍니다.

위에 적힌 Query는 오류가 있습니다. Restaurant를 리턴 할것이라고 명시했지만 true를 리턴합니다.

npm run start:dev
http://localhost:3000/graphql

이렇게 기본적인 데이터베이스 모델을 만들었습니다.

github

코드는 깃허브 주소를 참고하시면 됩니다

728x90

'Side > uber-eats' 카테고리의 다른 글

TypeORM setup 과 Nestjs Config  (0) 2021.05.23
NestJs Validating ArgsTypes  (0) 2021.05.23
Nestjs - InputTypes and ArgumentTypes  (0) 2021.05.22
NestJs - Arguments  (0) 2021.05.22
Nestjs + react Day1  (0) 2021.05.19