Отображение массива в схему в резольвере - PullRequest
0 голосов
/ 10 октября 2018

С GraphQL у меня есть следующая панель запуска, где я могу получить результат одного объекта без проблем:

https://launchpad.graphql.com/xqnxw308xl

Однако, когда я пытаюсь применить тот жеконцепции, но вместо того, чтобы вернуть массив всех «символов», я получаю сообщение об ошибке:

"Expected Iterable, but did not find one for field Query.getCharacters."

https://launchpad.graphql.com/qxm0m79xpp

В резольвере я хотел бы понять, как отобразить массив«символы», которые возвращаются из API в мою схему.

1 Ответ

0 голосов
/ 10 октября 2018

Ответ от API, который вы вызываете, выглядит следующим образом:

{
    "count": 87, 
    "next": "https://swapi.co/api/people/?page=2", 
    "previous": null, 
    "results": [
        {
            "name": "Luke Skywalker", 
            "height": "172", 
            "mass": "77", 
        },
    ]
}

Это объект, который вы возвращаете из преобразователя, который, как показывает ошибка, не является итерируемым, поэтому GraphQLне знает, как справиться с этим.Необходимо преобразовать результат API перед его возвратом, например так:

const resolvers = {
  Query: {
    getCharacters: () => {
      return fetch('https://swapi.co/api/people')
        .then(res => res.json())
        .then(json => json.results);
    }
  },
  Character: {
    // transform specific fields here
  }
}

Обратите внимание, что распознаватель для поля name больше не требуется, поскольку имя поля соответствует имени свойства каждого Characterобъект, возвращаемый распознавателем getCharacters.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...