Запрос GraphQL для доступа к первому элементу в массиве?

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

Что-то типа:

query {
  allDBItems {
    edges {
      node {
        exampleArray([0])
      }
    }
  }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
13
0
15 510
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

НЕ таким образом - такого синтаксиса «только для клиента» не существует.

Общее правило «проси то, что тебе нужно» требует явного выражения при передаче [именованных] параметров (переменных).

Просто скажите своему API, что вам нужно — передать параметр limitindex?) — что-то узнаваемое для вашего API [преобразователи].

Без этого вы можете просто использовать только первый из всех возвращаемых элементов массива — подходит только для небольших наборов данных.

Прочтите документы graphql о нумерации страниц.

Спасибо, что нашли время ответить. Значит, нельзя ограничить размер возвращаемых массивов? Например, вы можете получить только полные массивы? У меня есть очень большие массивы, и мне нужен только первый элемент в каждом. Я предполагаю, что вы не можете использовать (first:x) для отдельного массива.

Joss Classey 24.04.2019 13:20

Вы можете передавать переменные, чтобы сообщить API, сколько записей вам нужно — преобразователь должен использовать этот параметр для SQL LIMIT (например).

xadm 24.04.2019 13:27
Ответ принят как подходящий

Нет, GraphQL не предоставляет никакого синтаксиса для управления запросом, кроме условного включения/исключения полей с помощью директив @skip и @include.

Служба GraphQL, к которой вы запрашиваете мая, поддерживает способ ограничить набор результатов для поля определенной длиной, предоставив аргумент в поле, например limit, first или last. Однако сервер должен включить эти поля как часть схемы службы и предоставить логику для их реализации. Проверьте документацию вашего API, чтобы узнать, поддерживаются ли эти поля.

Любые манипуляции с ответом должны выполняться на стороне клиента. Существует экспериментальная библиотека graphql-lodash, которая позволяет вам делать это прямо внутри ваших запросов, но в конце концов данные все еще преобразуются на стороне клиента.

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

Wong Jia Hau 30.06.2021 11:45

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