1 minute read

오늘 배운 것


1. server에서 prisma server 사용하려면??

prisma 공식 repository의 example를 보니 매우 도움이 된다!! resolver-forwarding을 보니, prisma binding package로부터 forwardTo와 Prisma 함수를 import하여 이쪽 resolver에 적용시킬 수 있다. 다음은 example의 index.js 파일이다.

const { GraphQLServer } = require("graphql-yoga");
const { Prisma, forwardTo } = require("prisma-binding");

const getPrismaInstance = () => {
  return new Prisma({
    typeDefs: "generated-schema.graphql",
    endpoint: "http://localhost:4466/resolver-forwarding"
  });
};

const resolvers = {
  Query: {
    posts: forwardTo("db")
  },

  Mutation: {
    createPost: forwardTo("db"),
    deletePost: forwardTo("db")
  }
};

const server = new GraphQLServer({
  typeDefs: "schema.graphql",
  resolvers,
  context: {
    db: getPrismaInstance()
  }
});
server.start(() => console.log("Server is running on localhost:4000"));

이렇게 작성할 수 있으면 express 서버에서는 어떻게 바꾸어야 할까? 이것에 대해서는 집에서 분석하기로 하자.

prisma example에는 아주 좋은 버릴 게 없는 예제들이 있으므로 참고하자. auth, data modelling 등등..

아예 예제들만 긁어서 devtips에 놓고 공부하자

2. AUSK의 server측 분석

server.js는 기본 모듈인 http로부터 httpServer를 생성하되, request가 오면 그것을 express app이 해석하게 한다. 그리고 그 express가 다른 graphql 미들웨어 등을 처리한다. 다만 graphql subscription만은 따로 http단에 직접 연결하는 것으로 보인다. (왜인거냐!!) 어찌됐든 내가 알아야 할 부분은, prisma에 연결하는 것이고, 그러려면 endpoint 설정과 resolver forwarding, 그리고 어쩌면 secret 관련 설정 정도? 만 하면 될 거 같다. 문제는 이것을 정확히 어떻게 수정하여 적용하느냐 이다.

dep

ref


Comments