Добавление ограничений к вложенному значению в graphql

#graphql #limit

#graphql #ограничение

Вопрос:

Вот простой запрос GraphQL для выборки всех пользователей. Я хотел бы добавить ограничение на количество друзей, которые будут иметь каждый узел (человек) (скажем, максимум 5) при извлечении. Возможно ли это в GraphQL? Я знаю, что можно добавить ограничение для всех людей, что-то вроде allPeople(limit: 5) , но я не думаю, что это поможет моему варианту использования.

 {
  allPeople {
    nodes {
      id
      friends {
        name
        id
        phone
      }
    }
  }
}
  

Комментарии:

1. @xadm не могли бы вы ответить на вопрос, чтобы я мог принять?

Ответ №1:

Вы можете добавить параметры к friends «уровню» в запросе

… если поддерживается и решается отдельно

в общих спецификациях graphql не определен синтаксис фильтрации или поиска.

Все зависит от конкретного сервера / env, способа разрешения и т. Д.

… вероятно, лучше разрешить оба уровня ( people friends ) в people resolver (один sql-запрос) — в этом случае оба фильтра / ограничения должны быть определены на «родительском» уровне — allPeople(limit:5, friendsLimit:5)

Комментарии:

1. Спасибо за объяснение. На самом деле я использую GatsbyJS. Мне, вероятно, нужно изучить, как создавать решения для того же (или создать отдельный вопрос).

2. gatsby имеет ограниченную функциональность graphql … ИМХО не стоит усилий… возвращает все данные, limit в компоненте — просто отображает xx элементов (xx может быть передан как параметр контекстом)

3. Имеет смысл. Хотя, просто ради знаний, было бы любопытно узнать, как это можно сделать.

4. для этого используйте реальный / живой сервер graphql… его можно использовать позже в качестве исходного кода для gatsby