Вложенные комментарии в запросе graphql

Я пытался найти информацию, но не понял ответов, поэтому я здесь. Мне нужно сделать бесконечную систему вложенных комментариев, но дело в том, что мне нужно каждый раз писать «дети» в мою схему снова и снова, чтобы получить детей, но есть ли способ сделать это рекурсивно?

 query GetComments($postId: Int!, $skip: Int!, $take: Int!) {
    getComments(postId: $postId, skip: $skip, take: $take) {
      id
      createdAt
      updatedAt
      authorId
      comment
      parentId
      postId
      author {
        name
        id
        image
        admin
        moder
      }
      children {
        id
        createdAt
        updatedAt
        authorId
        comment
        parentId
        postId
        author {
          name
          id
          image
          admin
          moder
        }
      
      }
    }
  }

Итак, вы видите, что если я хочу извлечь новых дочерних элементов внутри дочерних элементов, мне нужно написать больше дочерних элементов.

определения типов:

type User {
    id: Int
    name: String
    image: String
    admin: Boolean
    moder: Boolean
}
type Comment {
  id: String
  createdAt: String
  updatedAt: String
  authorId: Int
  comment: String
  postId: Int
  author: User
  parentId: String
  children: [Comment]
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
2
0
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Цель GraphQL — получить данные, которые абсолютно необходимы. Следовательно, GraphQL не поддерживает рекурсию. Если вы находитесь в положении, когда вам необходимо рекурсивно извлекать данные GraphQL, вам необходимо изменить логику, пересмотрев модель, поскольку она противоречит тому, что означает GraphQL.

Вы можете обратиться сюда, https://github.com/graphql/graphql-spec/issues/91#issuecomment-206743676

НЕТ. Рекурсия — это антишаблон.

Схема GraphQL должна быть направленным ациклическим графом (DAG). Это означает, что в схеме не должно быть циклов (рекурсий).

Если ваша схема содержит циклы, это будет означать, что варианты использования не определены должным образом. Если вы думаете на графиках, вам нужно

Создайте свою схему GraphQL, чтобы выражать «как», а не «что»

Другие вопросы по теме