TIL 2018-06-11
오늘 배운 것
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 관련 설정 정도? 만 하면 될 거 같다. 문제는 이것을 정확히 어떻게 수정하여 적용하느냐 이다.
이해가 안 됬던 resolvers.js에서는 createResolvers라는 이름이 없는데 index.js에서는 resolvers.js에서 createResolvers라는 함수를 import 하는 것이 어떻게 가능한가 했더니 그냥 원하는 이름으로 가져오는 것이었다. 따라서 어떤 이름으로도 export default로 내보내진 함수를 가져올 수 있는 것이다.
3. prisma generator
prisma.ts 생성을 했으나 잘 실행이 안됨.
Comments