[이슈] GraphQL에서 DB에 없는 값 가져오기

2021. 1. 16. 22:00프로그래밍-Web/GraphQL

제목은 뭔가 있어보이지만, 그냥 내가 가끔씩 헷갈려서 쓰는 포스팅

 

Rest API 방식에서는 온갖 방식으로 데이터를 가져오는데

GraphQL에서는 GQL스키마에 정의된 값만 가져온다

 

그런데 보통은 찾아낸 Document자체를 리턴하는 방식으로 리졸버를 짜다보니

가끔 DB 스키마에 정의된 값만 가져오는 게 아닐까 싶을 때가 있다

 

당연히 아니고, 이것이 아니기 때문에 GraphQL 철학이 강점을 가질 수 있다

 

예컨데 이렇게 모델에는 nickName과 score라는 데이터만 존재하지만

 

나는 쟤네를 가공해서 여러가지 가공 데이터를 가져오고 싶다

(고난도의 가공은 aggregate를 사용하면 된다)

 

예컨데 저기서 find해온 데이터들을 가공해서 totalLength, indexList, scoreCountList라는 애를 만들어서 클라이언트에 리턴하고 싶다?

그러면 내가 원하는 데이터들을 gql 스키마 타입에 정의해주면 끝이다

 

그리고 리졸버에서는 저 데이터들에 대한 값을 어떻게든 만들어내서

 

해당 객체를 만들어 리턴하면 끝

 

잊지말자

 

gql을 쓰는 이유는 클라이언트 맘대로 데이터를 가져오게 하도록 하기 위해서다

다시말하자면 원하는 데이터는 뭐든지 서버에서 만들어서 뿌려줄 수 있다는 뜻이다