반응형
typeDefs를 정의하고 resolvers 를 정의하고 GraphQLServer( typeDefs,resolvers) 를 적어서 실행시키면
한 파일에 너무 큰 용량이 들어가서 보기가 힘들다. 이걸 나누면 정말 편할거같다.
typeDefs 파일과 resolvers 파일들을 기능별로 나눌수있다면 얼마나 좋을까?
그렇게하기위해서는
우선 graphql-tools와 merge-graphql-schemas 를 설치해야한다.
import { makeExecutableSchema } from "graphql-tools";
import { fileLoader, mergeResolvers, mergeTypes } from "merge-graphql-schemas";
import path from "path";
const allTypes = fileLoader(path.join(__dirname,"/api/**/*.graphql"));
//이뜻은 api폴더 밑에 있는 모든 폴더 밑에 있는 모든 .graphql파일을 가져온다.
const allResolvers = fileLoader(path.join(__dirname, "/api/**/*.js"));
//이뜻은 api폴더 밑에 있는 모든 폴더 밑에 있는 모든 .js파일을 가져온다.
const schema = makeExecutableSchema({
typeDefs: mergeTypes(allTypes),
resolvers: mergeResolvers(allResolvers),
});
export default schema;
이렇게하면 schema를 통해서 server에는
import schema from "schema" 를해주고
GraphQLServer({schema}) 이렇게만 적으면 끝이다.
이러면 모든 api폴더 안에 생기는 폴더 내부의 graphql은 typeDefs로
js파일은 resolvers 로 역할을 할 수 있다.
예를들어 인사에 관한 폴더를 만들고 그 내부에
인사.graphql
인사.js 를 만든다
인사.graphql에서는
type Query{
hello:String!
}
이라고하고 인사.js에서
export default{
Query:{
hello:()=>"Hi"
}
}
이렇게 생성한다면 서버를 재시작하면 이런 쿼리들이 만들어질것이다.
반응형
'코딩 > Graphql' 카테고리의 다른 글
Prisma 사용해서 계정만들기 기능 쉽게 만들기 (0) | 2020.05.29 |
---|---|
Prisma에서 기존값이 있는데 새로운 필드를 필수로 정해야할때 (0) | 2020.05.29 |
listen EADDRINUSE: address already in use :::4000 오류해결 (0) | 2020.05.18 |
Graphql 정리 (0) | 2020.05.18 |