GraphiQL, возвращающий нулевые значения при получении всех записей
Я пытаюсь построить простую схему GraphQL. У меня есть конечная точка json-сервера, работающая на localhost, которая возвращает некоторые простые данные json.
Я могу вернуть пользователя при указании идентификатора. Запрос для этого в схеме выглядит так:
staff: {
type: StaffType,
args: { id: { type: GraphQLInt }},
resolve(parentValue, { id }) {
return axios.get(`http://localhost:3000/staff/${id}`)
.then(resp => resp.data);
}
}
Запрос GraphQL выглядит так:
{
staff(id: 1){
id
Name
}
}
и это возвращает это в клиенте GraphiQL:
{
"data": {
"staff": {
"id": 1,
"Name": "John Doe"
}
}
}
Моя проблема начинается, когда я пытаюсь вернуть всех пользователей. Я создал другой запрос, чтобы попытаться просто получить все из http://localhost:3000/staff
без переданных аргументов. Если я перехожу непосредственно к этому URL в браузере, он возвращает всех пользователей, как и ожидалось. Однако, если я попробую его через GraphiQL, он, похоже, вернет объект, но все поля будут нулевыми. В GraphiQL или на консоли нет ошибок. Примеры кода ниже:
Запрос в схеме
allStaff: {
type: StaffType,
resolve(parentValue, args) {
return axios.get(`http://localhost:3000/staff/`)
.then(resp => resp.data);
}
}
Запрос GraphiQL
{
allStaff {
id
Name
}
}
Результат я получаю
{
"data": {
"allStaff": {
"id": null,
"Name": null,
}
}
}
если я поддерживаю журнал resp.data, возвращаются данные, и, как я уже сказал, конечная точка возвращает данные, когда я обращаюсь к ним напрямую через браузер, точно так, как ожидалось.
Я что-то пропустил?
Спасибо
1 ответ
Данные JSON могут быть массивом пользовательских объектов, но GraphQL все еще ожидает только один. Это потому, что в вашей схеме вы определили тип возвращаемого значения для allStaff
как StaffType
, Вам нужно обернуть его оберткой List, например так:
type: new GraphQLList(StaffType),