우선 필요한 묘듈인 merge-graphql-schemas
와 graphql-tools
, path
를 설치한다.
schema.js 파일을 하나 생성한다.
// schema.js 코드 내용
import {
fileLoader,
mergeResolvers,
mergeTypes
} from "merge-graphql-schemas";
import path from "path";
import { makeExecutableSchema } from "graphql-tools";
const allTypes = fileLoader(path.join(__dirname, "/api/**/*.graphql"));
// api 폴더 안에 모든 폴더에 모든 graphql 파일을 불러온다.
const allResolvers = fileLoader(path.join(__dirname, "/api/**/*.js"));
// api 폴더 안에 모든 폴더에 모든 js(resolver) 파일을 불러온다.
const schema = makeExecutableSchema({
typeDefs: mergeTypes(allTypes),
resolvers: mergeResolvers(allResolvers)
});
// schema 변수에 typeDefs, resolvers를 정의하여 담아주고 그것을 export 해준다.
export default schema;
api 폴더를 생성한다.
api 폴더 안에 Greetings 폴더를 생성한다.
Greetings 폴더 안에 sayHello.js
, sayHello.graphql
파일을 생성한다.
// sayHello.js 파일
export default {
Query: {
sayHello: () => "Hello!"
}
};
// sayHello.graphql 파일
type Query{
sayHello: String!
}
server 코드를 수정한다.
// index.js 파일
import { GraphQLServer } from "graphql-yogo";
import schema from "./schema"; // export한 schema를 가져온다.
const server = new GraphQLServer({ schema });
// GraphQLServer의 type과 resolver를 정의하는 방법은
// typeDefs, resolvers를 각각 정의하는 방법과 schema로 한번에 정의하는 방법이 있다.
server.start({ port: 4000 }, () => console.log("💻 Graphql Server Running"));
좋은 정보 감사합니다.