TIL 2018-06-08
오늘 배운 것
1. server의 graphql서버를 prisma graphql서버로 연결
만약 server-prisma를 external api로 쓴다면 resolver도 전부 다시 써야한다.
2. generate된 schema를 다시 prisma로 deploy하기
잊어버림.
꽤 복잡했고 여전히 제대로 성공한 것 같지 않다. 기존 id 등 prisma에서 예약된 필드를 수정해주어야 하고, 또 왜 나타나는지 모를 invalid token 머시기 에러가 떴었는데, 같은 이름의 relation을 지정했다가 다시 다르게 바꾸면 이런 에러가 뜨며 deploy가 한참 걸리다가 결국 실패한다. 그 외에도 몇 번 에러가 뜰 때마다 endpoint 서비스 자체를 제거하고 다시 deploy하긴 했는데, 좀 안정성이 떨어지는거 같아 실망이다. 더욱 어려운 부분은 Prisma의 id 필드는 GraphqlID? 라는 특수 타입인데, 이것이 과연 기존 서버의 resolver와 호환가능하냐는 것이다.
어쨌든 내가 지금 생각하는 방식은, knex만 prisma로 바꾸는 것인데, 현재는 sql.js에서 context class를 export하고, resolver에서 이 클래스들의 메서드를 호출한다. 그러나 prisma를 사용할 경우 context를 다음과 같이 이용하게 된다:
const user = await ctx.db.mutation.createUser({
data: { ...args, password },
})
또한, 현재 resolver는 obj, args, context의 세 가지 인수를 받는데, prisma에서는 아래처럼 4가지 인수를 받는다.
delete(parent, { id }, ctx, info) {
...
또 pubsub는 대체 뭘까. 왜 resolvers.js에서 pubsub가 나오나??
Comments