Ищу решение случайноsort запросом GraphQL. Я просмотрел документацию, и оказалось, что у них нет вариантов.
Кто-нибудь знает об одном или обходном пути для рандомизации следующего запроса?
query {
allContentfulAttraction(
limit: 4
filter: { location: { eq: "AttractionLocation1" } }
) {
edges {
node {
id
}
}
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


GraphQL просто предоставляет основу для разрешения и проверки значений полей на основе схемы. В нем нет предустановленных средств фильтрации или сортировки запрашиваемых данных. Сервер решает, предоставлять ли клиенту способы сделать это и как реализовать эту функцию.
Что касается конкретно Gatsby, их API поддерживает запросы случайных узлов. В лучшем случае вы можете запросить все узлы, а затем выбрать случайный набор элементов из возвращенных данных, используя sampleSize lodash или pickset Chance.
Да, бы будет более эффективным, чтобы иметь возможность делать это через API. Однако, если API не поддерживает эту функциональность, единственный вариант - сделать это на стороне клиента.
Будем надеяться на будущую реализацию. При использовании gatsby, если вы выполняете запрос в gatsby-node и передаете только уменьшенное количество сообщений в контексте, время сборки находится под контролем.
https://www.howtographql.com/graphql-js/8-filtering-pagination-and-sorting/ говорит, что сортировка обрабатывается какой бы то ни было структурой, которую вы используете, например ПризмаorderBy или Маяк@orderBy.
Проблема этого подхода (в Gatsby) заключается в том, что он увеличит время постройки при увеличении количества постов. Действительно, было бы намного эффективнее иметь возможность запрашивать только ограниченное количество постов, уже рандомизированных.