-
graphql 시작하기개발 2020. 1. 28. 19:37
const express = require('express'); const app = express(); const expressGraphQL = require('express-graphql'); app.use('graphql',expressGraphQL({ graphiql:true })) app.listen(4000,()=>{ console.log('listening'); })
express-graphql은 express와 graphql 을 이어준다. '/graphql' url 이 뜨면 expressGraphql을 메소드실행해 graphql을 사용한다.
먼저 스키마를 만들어야한다.
const graphql = require('graphql'); const {GraphQLObjectType} = graphql; const UserType = new GraphQLObjectType({ name:'User', fields:{ id:{type:GraphQLString}, firstName:{type:GraphQLString}, age:{type:GraphQLInt} } })
GrapqhQLObjectType 을 통해 새로운 스키마를 만들수있다.
name, field로 나뉘며 필드 안에서는
필드명과 그 속성으로(타입) 구성된다.
다름은 rootQuery 를 정의한다 rootQuery 는 원하는 데이터를 찾는 방법을 정의한다.
const RootQuery = new GrapqhQLObjectType({ name:'RootQueryType', fields:{ user:{ type:UserType, args:{id:{type:GraphQLString}}, resolve(parentValue,args){} } } })
user의 id(string type의) 를 넣어주면 UserType을 반환해주는 루트쿼리 이다.
type에는 리턴할 타입을 넣고
args 는 쿼리할때 입력할 필드를 넣어주면된다.
마지막에 resolve함수를 통해 해당 user의 데이터를 찾는다.
resolve 함수에서는 어떻게 user를 찾을지 구현하면 된다.
resolve(parentValue,args){ _.find(Users,{id:args.id}) // 입력한 id 로 찾아줌 }
그리고 해당 RootQuery를 가지고 스키마를 만들어 export 해준후
module.exports = new GraphQLSchema({ query:RootQuery })
서버.js 에서 이것을 가져와 schema에담아주면 된다.
const schema = require('./schema/schema'); app.use('/graphql',expressGraphQL({ schema:schema, graphiql:true }))
'개발' 카테고리의 다른 글
graphql+react 변수를 가지고 Mutation 실행하기 (0) 2020.02.26 mongoDB 셋업하기 (0) 2020.02.18 GraphQL Mutation 스키마 만들어 delete,edit 해보기 (0) 2020.02.12 graphql 데이터 api만들고 연동 , 타입관 관계형성하기 (0) 2020.02.11 react firebase 연동 auth 정보 db, app에 저장하기 (0) 2020.01.07