Graphql -1

원종서·2021년 9월 27일
1

graphql

목록 보기
1/5

apollo-server

npm i apollo-server graphql

apollo-server 는 graphql의 프레임워크다
restAPI 의 Express 라고 생각하면 좋다.

prisma

$npx prisma migrate dev --preview-feature

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}
  • ORM인 prisma를 사용해 JS코드로 SQL문을 작성하는 것이다. default Database는 postgresql 이다

  • dev flag를 사용하면 prisma 가 자동적으로 client를 생성해준다.

  • client는 데이터베이스와 소통하는 수단이다.

$npx prisma studio

Prisma Studio 를 사용하면 데이터베이스 안에 있는 정보를 시각적으로 볼 수 있다.

graphql-tools

index.js에서 gql 코드를 전부 작성하면 가독성도 떨어지고 유지보수도 하기도 어려워진다,
모듈 별로 나누는 것이 중요한데

graphql을 사용할때는 graphql-tools 패키지를 사용해서 불리된 모듈을 한곳으로 모아주어야 한다.

기능 별로 나누고, 그 안에서 typeDefs과 resolvers 로 나누는것이 바람직하다.

npm install graphql-tools@7.0.2

// in schema.js


const loadedTypes = loadFilesSync(`${__dirname}/**/*.typeDefs.js`);
const loadedResolvers = loadFilesSync(
    `${__dirname}/**/*.{queries, mutations}.js`
);

const typeDefs = mergeTypeDefs(loadedTypes);
const resolvers = mergeResolvers(loadedResolvers);

const schema = makeExecutableSchema({
    typeDefs,
    resolvers,
});

${__dirname}/*/.typeDefs.js

현재 디렉토리(src)를 기준으로 모든 폴더 > typeDefs.js로 끝나는 모든 것을 가져오겠다


// in server.js

require("dotenv").config();
import {ApolloServer, gql} 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:4000"));

Git Link

0개의 댓글