Почему я не могу получить полезный ответ от graphql с axios? - PullRequest
1 голос
/ 04 июня 2019

Я успешно аутентифицируюсь на сервере, отправляю свой запрос graphql и получаю ответ. Однако ответ не совсем правильный.

Это просто простая ситуация nodejs, axios, graphql. Я могу получить правильное размещение через почтальона или локон, но не с помощью узла. Я пытался получить также безрезультатно. Я делаю что-то неправильно? Это для api producthunt, исследователь api находится по адресу здесь

require('dotenv').config()
const axios = require("axios");
const PH_KEY = process.env.PH_KEY;
const PH_SECRET = process.env.PH_SECRET;
const BASE_URL = process.env.BASE_URL;
const AUTH_URL = process.env.AUTH_URL;
const GRAPHQL_URL = process.env.GRAPHQL_URL;
const PH = axios.create({
  baseURL: BASE_URL,
  responseType: 'json',
  headers: {
    // 'Accept': 'application/json, text/plain, gzip, deflate, */*',
    'Content-Type': 'application/json'
  },
})
let TOKEN = 'Bearer '

const getAuth = async () => {
  return await PH({
    url: AUTH_URL,
    method: "post",
    data: {
      client_id: `${PH_KEY}`,
      client_secret: `${PH_SECRET}`,
      grant_type: "client_credentials"
    }
  })
    .then((res) => {
      console.log('auth status ', res.status)
      return res.data.access_token
    })
    .then((res) => {
      TOKEN += res
      console.log(TOKEN)
    })
    .catch((err) => {
      console.log(err)
    })
  }

const getHunt = async () => {
  await getAuth()
  PH.defaults.headers.common['Authorization'] = TOKEN
  return await PH({
    url: GRAPHQL_URL,
    method: 'post',
    data:
    {
      query: `
            query posts {
  posts(order: RANKING, first: 1) {
    edges {
      node {
        name
        votesCount
        user {
          name
        }
        createdAt
      }
    }
  }
}
            `
    }
  })
  .then((res) => {return res})
    .then((res) => {
      console.log(res.data)
      return res.data
    })
    .catch((err) => {
      console.log(err)
    })
}
const Main = async () => {
  await getHunt()
}
Main()

Это вывод, который я получаю в узле:

[Running] node "/Users/fireinjun/Work/YAC/yac-ph-tophuntfunction/app.js"
auth status  200
Bearer #################################################
{ data: { posts: { edges: [Array] } } }

Вот что я ожидаю:

{
  "data": {
    "posts": {
      "edges": [
        {
          "node": {
            "name": "Trends by The Hustle",
            "votesCount": 125,
            "user": {
              "name": "Jack Smith"
            },
            "createdAt": "2019-06-04T07:01:00Z"
          }
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 04 июня 2019

Я неправильно обращался к данным!Видимо мне нужно было увидеть res.data.data.posts.edges[0]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...