Как получить массив в качестве результата в Apollo?

#javascript #graphql #apollo #react-apollo

#javascript #graphql #apollo #реагировать-apollo

Вопрос:

Давайте представим, что у нас есть такая схема на нашем сервере с запросом, который просто извлекает список тем на основе переданного аргумента name.

 Query listTopics(
name: String!
): [Topic!]!

type Topic {
id: String!
name: String!
image: String
timeBasedFeed: String!
scoreBasedFeed: String!
aliases: [String!]!
parents: [String!]!
allAncestors: [String!]!
}
  

Как мы можем объявить, что запрос возвращает массив на клиенте, когда мы извлекаем данные?

Когда мы работаем с запросом, который возвращает объект и т.д. мы можем сделать следующее

 import { gql, useQuery } from '@apollo/client';

const GET_DOG = gql`
  query GetDog { 
      // Declare response fields
      id
      name
     }
`;
  

Но как сделать то же самое, когда запрос возвращает массив?

Я пытался сделать это таким образом

 import { gql } from '@apollo/client';

export const LIST_TOPICS_QUERY = gql`
  query listTopics($name: String!) {
      [ 
        id,
        name,
        image,
        timeBasedFeed,
        storeBasedFeed,
        aliases,
        parents,
        allAncestors
      ]
  }
`;
  

К сожалению, это не работает.

Спасибо за любую информацию.

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

1. используйте graphiql, он подскажет вам…. запрос выглядит так же, ответ будет другой формы

Ответ №1:

Нет никакой разницы в том, как вы указываете набор выбора для поля, которое возвращает один объект, и поля, которое возвращает список объектов — синтаксис идентичен, хотя форма ответа будет отличаться.