Я создал следующий код, чтобы вернуть заголовок, имя и фамилию из ответа graphql. Я использую эти возвращаемые значения для создания автоматического теста, который утверждает их значение:
const { createApolloFetch } = require('apollo-fetch');
const uri = 'http://localhost:3000';
const query = `{
Post(id: 1) {
id
title
forename
surname
}
}
`;
const apolloFetch = createApolloFetch({ uri });
const returnApolloBody = () => {
return apolloFetch({query}).
then(res => res.data)
.catch(err => {
throw new Error(err);
});
};
const responseForename = returnApolloBody().then(result => result.Post.forename);
const responseTitle = returnApolloBody().then(result => result.Post.title);
const responeSurname = returnApolloBody().then(result => result.Post.surname);
module.exports = {
responseForename: responseForename,
responseTitle: responseTitle,
responeSurname: responeSurname,
};
Однако я понял, что это не самый эффективный способ, так как я использую отдельный http-запрос для каждого значения. Я думал, что будет гораздо проще сохранить весь ответ в виде значения JSON, а затем извлечь значения из этой переменной, однако мне не очень повезло. У меня есть следующий код, и значения возвращаются как неопределенные:
const { createApolloFetch } = require('apollo-fetch');
const uri = 'http://localhost:3000';
const query = `{
Post(id: 1) {
id
title
forename
surname
}
}
`;
const apolloFetch = createApolloFetch({ uri });
const returnApolloBody = () => {
return apolloFetch({query}).
then(res => res)
.catch(err => {
throw new Error(err);
});
};
const response = returnApolloBody().then(response => response);
const forename = response.then(response => response.Post.forename);
const surname = response.then(response => response.Post.surname);
const title = response.then(response => response.Post.title);
module.exports = {
forename: forename,
title: title,
surname: surname
};
Чего мне не хватает, чтобы позволить мне сохранить весь ответ в const, а затем запросить конкретные свойства в этом const?
Заранее спасибо