노마드코더 인스타그램 클론코딩 바로가기 https://nomadcoders.co/instaclone
프로젝트를 진행하면서 가장 중요한게 파일을 관리하는 방법이라고 생각한다. 집에서도 정리정돈이 잘 되어져 있어야 물건을 쉽게 찾을 수 있듯이
프로젝트도 마찬가지다. 프로젝트는 점점 커지는데 파일을 나눠주지 않으면 후의 유지보수에서도 어려움을 겪을 수 있다.
Graphql에서는 많은 Query와 Mutation들을 필요로 하는데 이들을 잘 나눠서 마지막에 합쳐주는 작업을 하고자한다.
정리
각각의 Query,Mutation에 대한 폴더생성 => 각각의 폴더안 typeDefs.js와 resolvers.js를 생성(Devide) => 후에 합쳐준다.
npm install graphql-tools@latest
: Devide & Conqure을 위해 설치
- client.js : PrismaClient를 이용해 client 생성
- schema.js : graphql-tools를 이용해서 각 파일들의 contents를 합쳐준다.
- server.js : 합친 schema를 이용해 server 구현
// schema.js
import {loadFilesSync} from "..."
import {mergeResolvers,mergeTypeDefs} from "..."
import {makeExecutableSchema} from "..."
// 최상위 Root경로아래의 모든 폴더안의 모든 파일들 중에서 typeDefs.js인 파일들을 가져옴
const loadedTypes = loadFilesSync(`${__dirname}/**/*.typeDefs.js`);
const loadedResolvers = loadFilesSync(`${__dirname}/**/*.resolvers.js`);
const typeDefs = mergeTypeDefs(loadedTypes);
const resolvers = mergeResolvers(loadedResolvers);
const schema = makeExecutableSchema({typeDefs,resolvers});
export default schema;
// server.js
import dotenv from "dotenv";
dotenv.config();
import {ApolloServer} from "apollo-server";
import schema from "./schema";
const server = new ApolloServer({
schema,
});
const PORT = process.env.PORT;
server
.listen(PORT)
.then(()=>console.log(`Server is running on http://localhost:${PORT}/`));
dotenv는 외부에 노출되어서는 안되는 정보를 위해서 필요하다.
npm install dotenv