

То, что вы имеете в виду, часто обозначается как Pagination, и это то, что покрывается Спецификация GraphQL.
Существуют различные возможные способы построения запроса, позволяющие получить несколько записей определенного типа объекта (комментарии в нашей ситуации).
Самый простой вариант - определить строку запроса GraphQL с типом объекта, который вы хотите пересечь, во множественном числе, что означает, что ваш запрос будет выглядеть так:
{
allPosts {
title,
comments {
content
}
}
}
Но с этой реализацией вы в конечном итоге получите все данные вместо того, чтобы просто получить их кусок. Очевидно, что этот подход может иметь много недостатков в зависимости от объема извлекаемых данных и должен использоваться только в определенных ситуациях.
Самый простой способ добиться того, чего вы хотите, - это запросить комментарии в виде «фрагмента», что означает, что вы запрашиваете определенную начальную часть набора данных.
В этом случае вы должны запросить первые 5 комментариев.
{
allPosts {
title,
comments(first: 5) {
content
}
}
}
Но что, если вы хотите пролистать оставшуюся часть списка?
{
allPosts {
title,
comments(first: 5, offset:5) {
content
}
}
}
При этом вы можете попросить следующие 5 комментариев.
Но подход, который рекомендуется использовать при реализации разбиения на страницы, - это пагинация на основе курсора, который можно перевести примерно так:
{
allPosts {
title,
comments(first: 5) {
edges {
node {
content
}
cursor
}
}
}
}
Сложная часть состоит в реализации функциональности resolvers (это немного проще с такими фреймворками, как Apollo).
Спасибо, вы мне очень ясно дали понять. Но мой главный вопрос заключается в том, как реализовать резолвер в бэкэнде, используя apollo ....