본문 바로가기
개발/GraphQL , Apollo

GraphQL서버에서 특정값만 받아오기(필터링)

by 안뇽! 2022. 1. 21.
반응형

우선 db폴더에 다음과 같이 db.js를 만들어주었다.

index.js는 다음과 같이 구성(분리되어 있던 graphql/resolvers.js를 index.js와 합쳤다.)

npm start를 하고 localhost:4000에서 확인해보자.

 

  • 특정값만 받아오기

  • 여러값을 받아오기


 

Resolver

resolver는 GraphQL 서버에서 요청을 받는다, GraphQL 서버가 Query나 Mutation의 정의를 발견하면 resolver를 찾고 해당 함수를 사용한다.

 

아래 코드에 resolver와 db, schema.graphql이 적혀있다.

//--------------
//db/db.js
export const people = [
  { id: "0", name: "Nicolas", age: 18, gender: "female" },
  { id: "1", name: "June", age: 28, gender: "male" },
  { id: "2", name: "Hee", age: 26, gender: "female" },
];

export const getById = (id) => {
  const filteredPeople = people.filter((person) => person.id === String(id));
  return filteredPeople[0];
};

//--------------
//index.js
import { GraphQLServer } from "graphql-yoga";
import { getById, people } from "./db/db";
..(생략)..
const resolvers = {
  Query: {
    people: () => people,
    person: (_, { id }) => getById(id),
  },
};
//--------------
//schema.graphql

type Person {
  id: String!
  name: String!
  age: Int!
  gender: String!
}

type Query {
  people: [Person]!
  person(id: Int!): Person
}

type 에서 person(id:2)는 Person 타입을 반환한다.

resolver에서는 아래와 같이 person이 입력되었을때, getById(id)를 반환한다.

export const people = [
  { id: "0", name: "Nicolas", age: 18, gender: "female" },
  { id: "1", name: "June", age: 28, gender: "male" },
  { id: "2", name: "Hee", age: 26, gender: "female" },
];

export const getById = (id) => {
  const filteredPeople = people.filter((person) => person.id === String(id));
  return filteredPeople[0];
};

const resolvers = {
  Query: {
    people: () => people,
    person: (_, { id }) => getById(id),
  },
};

localhost:4000에서 다음과 같이 id가 2번인 person의 정보를 얻어올 수 있다.

 

반응형

'개발 > GraphQL , Apollo' 카테고리의 다른 글

Apollo 공식문서 첫부분  (0) 2022.01.22
Apollo Client  (0) 2022.01.21
GraphQL Mutation은 CRUD중 CUD이다.  (0) 2022.01.21
GraphQL 공식문서 읽어지는 부분만 정리  (0) 2022.01.21
GraphQL 복습 끄적인거  (0) 2022.01.21