GraphQL에 그래프 넣기
예를 들어 Pen 에 대한 주석을 가져오기 위해 쿼리 유형에
comments
쿼리를 추가하고 item_id
및 item_type
를 인수로 전달했습니다.개요
type Query {
"List of Item Comments"
comments(input: CommentsInput!): CommentsPaginated
}
input CommentsInput {
pagination: PaginationInput = {}
filters: CommentsFiltersInput!
}
input CommentsFiltersInput {
itemId: ID!
itemType: ItemEnum!
}
질문
query Comments($input: CommentsInput!) {
comments {
id
owner {
id
username
}
text
}
}
변수
"variables": {
"input": {
"filters": {
"itemID": "hwvmeXVR"
"itemType": "Pen"
}
}
}
이것은 잘 작동했지만 API의
Query
유형에 주석을 달 이유가 없었습니다. 여러 항목에 속한 댓글을 쿼리하고 싶었던 적이 없었습니다. Item
(일명 펜, 프로젝트 또는 컬렉션)에 대한 특정 댓글만 받았습니다.얼마 후, 모든 쿼리를
Query
유형에 넣을 필요가 없고 스키마의 모든 개체에 쿼리를 넣을 수 있다는 것을 깨달았습니다. 그래서 댓글 쿼리를 Item
인터페이스로 옮겼습니다. 이제 Pen
, Project
및 Collection
개체에서 주석을 사용할 수 있습니다.개요
"A CodePen Item - Pen, Collection, Post or Project"
interface Item {
"List of Item Comments"
comments(input: PaginationInput = {}): CommentsPaginated
}
질문
query CommentsQuery(
$id: ID!
$itemType: ItemEnum!
$commentsPaginationInput: PaginationInput
) {
item(id: $id, itemType: $itemType, token: $token) {
id
comments(input: $commentsPaginationInput) {
records {
id
...CommentDetails
}
}
}
}
이것이 GraphQL 그래프의 요점입니다. 서버에 요청할 수 있는 데이터 모델에 대해 생각하는 대신 비즈니스 논리의 노드가 서로 연결되고 관련되는 방법에 대해 생각합니다.
이 새로운 디자인 선택의 장점은 주석에 대한 리졸버를 단순화했다는 것입니다. 이전에는 DB에서 항목을 선택하고 로그인한 사용자에게 해당 항목에 대한 액세스 권한이 있는지 확인한 다음 댓글을 검색해야 했습니다. 새 확인자는 권한 확인이 그래프에서 더 완료되었다는 확신과 함께 항목 레코드를 전달받습니다. 즉,
comments
확인자가 더 적은 작업을 수행해야 합니다.
Reference
이 문제에 관하여(GraphQL에 그래프 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rachsmith/putting-the-graph-in-graphql-1ann텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)