【问题标题】:How to store "apollo-fetch" graphql response in a variable?如何将“apollo-fetch”graphql响应存储在变量中?
【发布时间】: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


    【解决方案1】:

    您应该能够将结果response.Post 作为对象返回,例如下面我使用 apolloclient 来获取用户资料

    apolloclient.query({
    query: q_my_profile}).then(
    resp => {
        resolve(resp.data.my_profile);
    },
    error => {
        reject(error.message);
    });
    

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 2020-10-13
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 2022-12-02
      • 2018-03-02
      相关资源
      最近更新 更多