Я пытаюсь запросить API GraphQl через прокси другого API GraphQL, и получаю сообщение об ошибке.Я использую graphql yoga для своего сервера и подключаюсь к другому API GraphQl из CMS.Вот мой код:
server.js
const { GraphQLServer } = require('graphql-yoga');
const Prismic = require('./prismic.config.js');
const gql = require('graphql-tag');
const typeDefs = `
type Query {
page(lang: String, uid: String): Page
}
type Page {
page_title: [TextField]
}
type TextField {
text: String
}
`
const resolvers = {
Query: {
page: (parent, args, context, info) => {
const query = gql`${context.request.body.query}`;
const result = context.Prismic.query({
query,
variables: { ...args }
})
.then(resp => {
return resp.data.page;
})
.catch(err => console.log(err));
return result;
}
}
}
const server = new GraphQLServer({
typeDefs,
resolvers,
context: req => ({ ...req, Prismic })
})
server.start(() => console.log('Server is running on localhost:4000'))
Вот мой запрос ниже с детской площадки graphql, которая поставляется с Graphql Yoga:
query {
page(lang: "en-gb", uid: "homepage") {
page_title {
text
}
}
}
Ошибка i 'm получение:
'Запрос не проходит проверку.Нарушения: \ n \ nField \ 'page_title \' типа \ 'Json \' не должен иметь вложенного выбора.(строка 3, столбец 5): \ n page_title {\ n ^ '}},
Странно то, что я могу получить правильный ответ, если жестко закодировать запрос без вложенного поля text
как подсказывает ошибка на сервере, вот так:
// const query = gql`${context.request.body.query}`;
const query = gql`
query($uid: String!) {
page(lang: "en-gb", uid: $uid) {
page_title
}
}
`;
Попытка изменить мой запрос на игровой площадке graphql, чтобы не включать вложенное поле text
, например:
query {
page(lang: "en-gb", uid: "homepage") {
page_title
}
}
Дает мойСледующая ошибка и не позволяет мне сделать запрос вообще:
поле "page_title" типа "[TextField]" должно иметь выбор подполей.Вы имели в виду "page_title {...}"?
Ошибка предполагает, что мне нужно добавить вложенное подполе text
, которое предназначено, но когда я использую этот запрос вместо жестко закодированногона сервере выдает ошибку, упомянутую ранее.
Не уверен, что я где-то ошибся в настройках?
Спасибо