Хотя я скопировал и вставил запрос graphQL из инструмента GraphiQL после того, как успешно протестировал его на GraphiQL, запрос вернул с ошибкой, когда я попробовал его в клиенте Apollo в приложении responseJS:
[GraphQL error]: Message: Cannot query field "allStudents" on type "Query"., Location: [object Object], Path: undefined
Вот моя реализация:
const link = createHttpLink({
uri: 'http://localhost:8000/graphql',
fetchOptions: { method: "POST" }
});
const client = new ApolloClient({
link: link
});
const GET_STUDENTS = gql`
query getStudents($schoolID: Int!){
allStudents(schoolId: $schoolID){
pickUpLat
pickUpLng
}
}
`;
client
.query({
query: GET_STUDENTS,
variables: { schoolID: 1 }
})
.then(result => console.info(result));
Что могло быть не так? вот правильный ответ, которого я ожидал:
{
"data": {
"allStudents": [
{
"pickUpLat": 31.9752942479727,
"pickUpLng": 35.8438429235775
},
{
"pickUpLat": 31.9754545979993,
"pickUpLng": 35.8437478537235
}
]
}
}
РЕДАКТИРОВАТЬ
Я получаю ожидаемые результаты с помощью GraphiQL:

РЕДАКТИРОВАТЬ2
Я попытался сравнить полезную нагрузку между моим запросом и запросом GraphiQL:
Полезная нагрузка моего запроса: (у него есть __typename, я не знаю почему)
{"operationName":"getStudents","variables":{"schoolID":1},"query":"query getStudents($schoolID: Int) {\n allStudents(schoolId: $schoolID) {\n pickUpLat\n pickUpLng\n __typename\n }\n}\n"}
Полезная нагрузка запроса GraphiQL:
{"query":"query getStudents($schoolID: Int!){\n allStudents(schoolId: $schoolID){\n pickUpLat\n pickUpLng\n }\n}","variables":{"schoolID":1},"operationName":"getStudents"}
Итак, они почти идентичны. Есть идеи?
Я обнаружил, что это должен быть schoolID, а не schoolId, я также попробовал $schoolID, но получил ту же ошибку, пожалуйста, см. РЕДАКТИРОВАТЬ выше, он показывает, что schoolID - правильное имя переменной в разделе QUERY VARIABLES .. как я могу получить более подробную информацию об ошибке ?
Какую версию apollo-client вы используете? Вы должны настроить клиент с кешем, например apollo-cache-inmemory, и обычно ваш клиент выдает ошибку, если вы пытаетесь использовать его, не сделав этого.
Я обнаружил, что моя проблема связана с github.com/apollographql/apollo-link/issues/609





Для всех, кто может искать эту проблему, убедитесь, что вы импортируете ApolloClient из пакета apollo-client, а не из других пакетов.
В моем случае я определил запрос, который не требовал никаких параметров, и он возвращал бы массив объектов:
myBasicQuery: [BasicAnswer]
type BasicAnswer {
name String
phone String
}
Я получал ошибку: Cannot query field \"BasicAnswer\" on type \"BasicAnswer\", когда объявил это так:
query myBasicQuery {
BasicAnswer {
name
phone
}
}
Если оставить только поля BasicAnswer, проблема решена:
query myBasicQuery {
name
phone
}
Ошибка моего запроса заключалась в том, что я не загрузил новую схему.
Вы можете скачать схему с помощью: apollo schema:download --endpoint=http://localhost:8080/graphql schema.json
замените http: // localhost: 8080 / graphql на конечную точку вашего сервера
Вы можете увидеть больше на https://www.apollographql.com/docs/ios/downloading-schema/
ваша переменная -
schoolId, а в запросе -$schoolID, это может быть проблемой