Я пытался найти информацию, но не понял ответов, поэтому я здесь. Мне нужно сделать бесконечную систему вложенных комментариев, но дело в том, что мне нужно каждый раз писать «дети» в мою схему снова и снова, чтобы получить детей, но есть ли способ сделать это рекурсивно?
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, вам необходимо изменить логику, пересмотрев модель, поскольку она противоречит тому, что означает GraphQL.
Вы можете обратиться сюда, https://github.com/graphql/graphql-spec/issues/91#issuecomment-206743676
НЕТ. Рекурсия — это антишаблон.
Схема GraphQL должна быть направленным ациклическим графом (DAG). Это означает, что в схеме не должно быть циклов (рекурсий).
Если ваша схема содержит циклы, это будет означать, что варианты использования не определены должным образом. Если вы думаете на графиках, вам нужно
Создайте свою схему GraphQL, чтобы выражать «как», а не «что»