Как избежать вложенных атрибутов данных при получении этого через graphql? - PullRequest
1 голос
/ 20 апреля 2020

Я использую традиционный REST API:

  axios({
    headers: {
      Accept: 'application/json',
    },
    method: 'GET',
    url: 'http://localhost:4000/GetUsers',

  }).then(function(response) {


    // Array of objects containing users
    console.log('done', response.data);

  });

В graphql:

  axios({
    headers: {
      Accept: 'application/json',
    },
    method: 'post',
    url: 'http://localhost:4000/graphql',
    data: {
      query: `{ users { Email }}`,
    },
  }).then(function(response) {
    // notice the doubble data call
    console.log('done', response.data.data.users);
  });

В graphql я вынужден позвонить .data.data.users, чтобы получить мои данные, и мне интересно, есть ли способ получить его через response.data как при вызове API REST, так что мне не нужен вызов .data и .users?

1 Ответ

2 голосов
/ 20 апреля 2020

Нет, это стандартное поведение - формат ответа, определенный в спецификации.

  • не требуется, так как обычно компоненты [реагируют] работают на data проп или useQuery (apollo) возвращает data
  • ответ может содержать error свойство рядом с data (брат)

Вы всегда можете назначить ярлык

const data=response.data.data;

... и только для последующего использования data.users или

const users=response.data.data.users;

... если вам это действительно нужно.

...