GraphQL 의문점
기업협업 자료로 일부만 공개하여 사용하는 점이 있다.
GraphQL에서 SelectAll이 안 된다.
1. 오늘 시도한 것
GraphQL에서 id, decription 등 컬럼의 내용을 하나 하나, 혹은 여러 단위로 불러 올 수 있는 CRUD 중 READ를 해봤는데, 그러면 한 번에 모든 데이터를 불러올 수 있는 방법은 없을지 고민하며 '삽질'을 시작하였다.
2. 고민한 것 & 완성해본 코드
1. dto
dto의 경우는 크게 다를 것이 없으나 배열로 받지 않을까? 하는 고민에서 다음과 같이 짰고, PickType이 하나씩 골라서 찝어가는 것이라 반대인 PartialType을 이용했다.
@InputType()
export class GetOrdersInput extends PartialType(Order){
}
@ObjectType()
export class GetOrdersOutput extends CoreOutput{
@Field(type => [Order], {nullable:true})
order?: Order[]
}
2. service
서비스의 경우에도 크게 다를 것이 없다고 생각했으나 findOne보다는 find를 사용하는 것이 적절하다 생각하여 작성했다. 위에만 보면 다음과 같다.
try{
const order = await this.orders.find();
if(!order){
return {
ok:false,
error: "Orders don't exist"
}
}
3. resolver
get과 같이 query를 조작하였다. 마찬가지로 배열을 받아야한다고 생각했으나 크게 달라진 것이 없었다. 변수 명이 좀 바뀌었다 정도..?
3. 내린 결론
마지막에 같이 찾다가 결국 찾아버린 사이트. 결론은 안 된다 였다.
이 사람의 주장도 일리가 있지만 결국 내가 생각했을 때 GraphQL의 목적과 생산성을 고려했을 때 굳이 모든 것을 select해 올 필요가 없지 않을까 싶다. 한 api주소로 원하는 정보를 쿼리로 마음껏 가져다가 쓰고 할 수 있는데 굳이 모든 정보를 다 긁어올 필요가 있을까?(물론 필요하다면 해야겠다만) 그런 이유로 아마 특별한 어트리뷰트나 함수가 없었지 않았나 싶다. 8시간 넘게 고민했고 충분히 이해가 될 정도로 공부를 했다. 혹시라도 이 가정이 (사실 이건 가정이지 결론이 아니다.) 깨질 수 있다면 깨고 싶다. 답이 있다면 참고하고 싶다.
Author And Source
이 문제에 관하여(GraphQL 의문점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sinichy7/GraphQL-의문점저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)