Не удается получить данные из Axios - PullRequest
0 голосов
/ 18 июня 2019

Не могу получить мои данные по запросу из Axios.Мой консольный журнал печатает правильно, но когда я пытаюсь установить его в переменную или вернуть его, я ничего не получаю.

static getGroupByID(groupID) {
    var self = this;
    var group = '';

    axios.post((GRAPHQL_END_POINT), {
      query: print(Queries.GET_GROUP_BY_ID),
      variables: {
        groupID: groupID
      }`enter code here`
    })
      .then(res => {
        console.log(res.data.data.getGroup.name);
        self.group = res.data.data.getGroup.name;
      })
      .catch(err => console.log(err))
    return group;
  }

Ответы [ 2 ]

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

Запрос асинхронный, ваша функция возвращает пустое значение group = '', задает значение в состоянии или использует await.Функция возвращается до завершения запроса, вы можете завершить запрос с помощью async / await.

static async getGroupByID(groupID) {
  try {
    const res = await axios.post(GRAPHQL_END_POINT, {
      query: print(Queries.GET_GROUP_BY_ID),
      variables: {
        groupID: groupID
      }
    });

    const { data } = await res;
    return data;

  } catch (error) {
    console.log(error);
  }
}

Или вы можете просто вернуть обещание и обработать его там, где вы вызываете функцию.

static getGroupByID(groupID) {
  return axios.post(GRAPHQL_END_POINT, {
    query: print(Queries.GET_GROUP_BY_ID),
    variables: {
      groupID: groupID
    }
  });
}
0 голосов
/ 18 июня 2019
static getGroupByID(groupID) {
    var self = this;
    var group = '';

    return axios.post((GRAPHQL_END_POINT), { <-- Return your promise
      query: print(Queries.GET_GROUP_BY_ID),
      variables: {
        groupID: groupID
      }`enter code here`
    })
      .then(res => {
        console.log(res.data.data.getGroup.name);
        return res.data.data.getGroup.name; <--- Return your data and use getGroupById(...).then(...)
      })
      .catch(err => console.log(err))
  }
...