【发布时间】:2018-04-26 01:57:40
【问题描述】:
我创建了以下代码以从 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 中的特定属性?
提前致谢
【问题讨论】:
标签: node.js graphql apollo apollo-client