Запрос мутации Graphql: как получить доступ к элементам данных - PullRequest
0 голосов
/ 08 февраля 2020
 const MUTATION_QUERY = gql`
  mutation MUTATION_QUERY(
    $name: bigint!
  ) {
    insert_name(
      objects: {
        name: $name
      }
    ) {
      returning {
        id
        name
      }
    }
  }
`;


const [onClick, { error, data }] = useMutation<{}, {}>(MUTATION_QUERY, {
        variables: {
          name: 1234,
        },
      });

Мой запрос на мутацию вставляет имя в мою таблицу и автоматически генерирует идентификатор. При консольном протоколировании переменной данных я могу просматривать поля id и name в объекте данных. Но я не могу получить к ним доступ по отдельности. Как я могу console.log "id". Спасибо.

console.log (data) выглядит следующим образом: {insert_name: {...}}

, который расширяется до:

insert_name: 
 returning: Array(1) 
   0: {id: 1, name: 1234} 
   length: 1 
   _proto_: Array(0) 
 _typename: "insert_name_mutation_response

Ответы [ 3 ]

0 голосов
/ 11 февраля 2020

console.log(data.insert_name.returning[0].id) даст вам возвращенный идентификатор.

Чтобы он работал в машинописи, нам нужно изменить запрос, чтобы добавить тип возвращаемых данных

const [onClick, { error, data }] = useMutation<{ReturnInsertNameProps}, {}>(MUTATION_QUERY, {
        variables: {
          name: 1234,
        },
      });

interface ReturnInsertNameProps {
  insert_name: ReturnQueryProps;
}

interface ReturnProps {
  returning: MessageProps[];
}

interface NameProps {
  id: number;
  name: number;
}
0 голосов
/ 19 февраля 2020

Мы также можем использовать метод onCompleted, предоставленный в useMutation, если мы хотим обработать результат запроса.

0 голосов
/ 08 февраля 2020

Вы можете получить доступ к полям объекта с помощью .

Например, если ваш объект выглядит так -

data = {
  id: 1,
  name: 'Jane',
}

Вы можете получить только идентификатор с помощью data.id

Это работает независимо от того, на сколько слоев ваш объект может go, поэтому возьмите этот пример -

data = {
  person: {
    id: 1,
    name: 'Jane',
  }
}

Вы можете получить идентификатор человека с помощью data.person.id.

...