ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스키마 활용 예시(Mutation)
    GraphQL 2019. 12. 7. 18:53

    playground란?

    graphql-yogo에 따라오는건데, 내 데이터베이스를 테스트하게 해주는것

    yarn start후에 localhost:4000로 접속하면 볼수있는 화면이고 여기서 api를 테스트 해볼수있다.

     

    GraphQL Resolvers

    GraphQL Resolvers는 GraphQL 서버에서 요청을 받음

    GraphQL 서버가 Query나 Mutation(설명)의 정의를 발견하면 resolvers.js를 찾을것이고, 해당 함수를 실행함

     

    여기선 db.js파일을 따로 생성해,데이터를 따로 빼놓음

    전체적인 디렉토리 구조
    resolvers.js

    • db.js 코드 구조
    let movies = [
      {
        id: "0",
        name: "Star Wars - The new one",
        score: 1
      },
      {
        id: "1",
        name: "Avengers - The new one",
        score: 8
      },
      {
        id: "2",
        name: "The Godfather I",
        score: 99
      },
      {
        id: "3",
        name: "Logan",
        score: 2
      }
    ];
    
    export const getMovies = () => movies;
    
    export const getById = id => {
      const filterMovies = movies.filter(movie => movie.id === String(id));
      return filterMovies[0];
    };
    
    // 필터를 이용해서 같은 아이디를 갖지 않은 movie의 배열을 리턴
    export const deleteMovie = id => {
      const cleanedMovies = movies.filter(movie => movie.id !== String(id));
      if (movies.length > cleanedMovies.length) {
        movies = cleanedMovies;
        return true;
      } else {
        return false;
      }
    };
    

    Mutation

    Mutation은 Database 상태를 바꿀때 사용되는것, id는 필요가 없음 우리의 데이터베이스에 의해 자동적으로 id가 생성됨

    state를 손쉽게 변경, 추가할 수 있음!!

    schema.graphql 파일의 코드
    resolvers.js

    • db.js 코드
    let movies = [
      {
        id: "0",
        name: "Star Wars - The new one",
        score: 1
      },
      {
        id: "1",
        name: "Avengers - The new one",
        score: 8
      },
      {
        id: "2",
        name: "The Godfather I",
        score: 99
      },
      {
        id: "3",
        name: "Logan",
        score: 2
      }
    ];
    
    export const getMovies = () => movies;
    
    export const getById = id => {
      const filterMovies = movies.filter(movie => movie.id === String(id));
      return filterMovies[0];
    };
    
    // 필터를 이용해서 같은 아이디를 갖지 않은 movie의 배열을 리턴
    export const deleteMovie = id => {
      const cleanedMovies = movies.filter(movie => movie.id !== String(id));
      if (movies.length > cleanedMovies.length) {
        movies = cleanedMovies;
        return true;
      } else {
        return false;
      }
    };
    
    export const addMovie = (name, score) => {
      const newMovie = {
        id: `${movies.length + 1}`,
        name,
        score
      };
      movies.push(newMovie);
      return newMovie;
    };
    

    Delete Mutation

    • db.js
    // 필터를 이용해서 같은 아이디를 갖지 않은 movie의 배열을 리턴
    // true면 데이터 삭제
    export const deleteMovie = id => {
      const cleanedMovies = movies.filter(movie => movie.id !== id);
      if (movies.length > cleanedMovies.length) {
        movies = cleanedMovies;
        return true;
      } else {
        return false;
      }
    };
    

    resolvers.js

     

    'GraphQL' 카테고리의 다른 글

    graphQL 설치 및 깃허브 푸쉬  (0) 2019.12.09
    GraphQL 특징,서버만들기,스키마..  (0) 2019.12.05

    댓글

Designed by Tistory.