프로그래밍-Web/GraphQL(4)
-
[정리] graphQL code generator
graphql-code-generator.com/ GraphQL Code Generator | GraphQL Code Generator And more! You can generate your resolvers' signatures, dump schemas, model types, query builders, React Hooks, Angular Services, and much more! graphql-code-generator.com Typescript와 graphQL을 함께 이용하면, type이라는 용어탓에 헷갈리는 경우가 생긴다. 리졸버, MongoDB 모델, graphQL의 타입정의들이 자주 중복되기 때문이다. 이러한 문제때문에 graphQL을 빌드한 산출물에 대한 모든 type이 적절하게 ge..
2021.03.08 -
[이슈] GraphQL에서 DB에 없는 값 가져오기
제목은 뭔가 있어보이지만, 그냥 내가 가끔씩 헷갈려서 쓰는 포스팅 Rest API 방식에서는 온갖 방식으로 데이터를 가져오는데 GraphQL에서는 GQL스키마에 정의된 값만 가져온다 그런데 보통은 찾아낸 Document자체를 리턴하는 방식으로 리졸버를 짜다보니 가끔 DB 스키마에 정의된 값만 가져오는 게 아닐까 싶을 때가 있다 당연히 아니고, 이것이 아니기 때문에 GraphQL 철학이 강점을 가질 수 있다 예컨데 이렇게 모델에는 nickName과 score라는 데이터만 존재하지만 나는 쟤네를 가공해서 여러가지 가공 데이터를 가져오고 싶다 (고난도의 가공은 aggregate를 사용하면 된다) 예컨데 저기서 find해온 데이터들을 가공해서 totalLength, indexList, scoreCountList..
2021.01.16 -
[개념정리] Scalar로 파일 업로드 처리하기
1) Upload 타입 생성 및 필요 타입 정의 GraphQL에서 지원하는 내장 스칼라 타입은 String, Int, Float, Boolean, ID 뿐이다. 파일을 업로드하기 위해서는 새로운 스칼라 타입을 생성해야 한다. 예제 코드와 같이 1. Upload라는 새로운 스칼라타입을 선언해주고, 파일 업로드의 인풋은 Upload 타입으로 받는다고 선언해준다. 2. 또한 받아온 File에 대한 타입 역시 선언이 필요하다. 3. 마지막으로 Upload Mutation에 대한 선언을 해주자. 이때 Upload로 선언한 타입은 리졸버 어딘가에서 라이브러리를 이용해 처리해줘야한다. 그렇지 않으면 타입검사를 사실상 안하는거나 다름 없다 2) Scalar 객체 처리 리졸버 정의 이 예시에서는 apollo-server..
2021.01.12 -
[개념정리] Type 정의하기
GraphQL을 쓰면서도 자꾸 장점을 까먹게 되는데 내가 피부로느끼는 GraphQL의 장점은 크게 세가지다 1. Type을 정의하여 한번의 call로 필요한 데이터를 다양하게 가져올 수 있다 2. 필요한 데이터가 너무 많은 경우 DataLoader를 활용해 하나의 쿼리로 치환할 수 있다 3. 클라이언트에서 1을 정의할 수 있다. 3번이야 뻔한 얘기고, 2번은 나중에 포스팅 할꺼다 1번은 좀 당연한 장점이긴한데, graphQL은 기본적으로 서로 관련없는 데이터들도 gql type으로 정의하면 유연하게 가져올 수 있다는 뜻이다. 예를 들어 보자 ProjectComapny라는 컬렉션이 있고, 기본적으로 해당 컬렉션에 call을 날리는 상황이다. 하지만 ProjectCompany라는 애는 Member ID, I..
2021.01.11