Как правильно разобрать и набрать результаты graphql? - PullRequest
0 голосов
/ 30 января 2020

В: Как мне разобрать и набрать ответ сервера общим образом c, когда один из родительских ключей в ответе будет постоянно меняться?

В качестве предисловия: я все еще новичок в TS и анализ ответов сервера - так что, возможно, это очевидно - но через день я не нашел хорошего решения.

Справочная информация: я использую Typescript и AWS Amplify. У меня есть мутация graphql под названием CreateGroup. Требуется ввод сгенерированного кода типа CreateGroupInput, определенного следующим образом:

export type CreateGroupInput = {
  id?: string | null,
  name: string,
  createdAt?: string | null,
  updatedAt?: string | null,
};

//I'm using this as input to create a new db entry
const groupInfo: CreateGroupInput = {
  name: "new group",
  createdAt: time,
  updatedAt: time
};

Я хочу проанализировать и ввести результат мутации, чтобы получить доступ к идентификатору, который создается во время процесса мутации. ИДЕАЛЬНО это то, что я хотел бы сделать:

const data = API.graphql(graphqlOperation(mutations.createGroup, {input: groupInfo}) as CreateGroupInput;

и иметь переменную данных типа CreateGroupInput с ответом сервера все в правильном месте. Однако результат, который я получаю, не очень хорошо разбирается, потому что структура немного другая:

{
    "data": {
        "createGroup": {
            "id": "1d720f68-56bd-46a9-82ef-e060a5b07177",
            "name": "new group",
            "createdAt": "1580278766358",
            "updatedAt": "1580278766358"
        }
    }
}

Я пытался создать разные комбинации JSON .Parse и JSON .stringify - но ни одна из них работать и, честно говоря, я чувствую, что я делаю что-то действительно неправильно. Эта функция в конечном итоге будет обрабатывать много разных мутаций - и я ожидаю, что имя «createGroup» в ответе изменится для каждого из них - поэтому я не могу просто проанализировать «result.data.createGroup».

Что приводит меня к публикации этого вопроса. Как выполнить синтаксический анализ и ввести ответ сервера в общем виде c, когда ключ «createGroup» в ответе будет постоянно меняться?

1 Ответ

0 голосов
/ 30 января 2020

Я обнаружил, что результаты также могут быть доступны по ключу (в ретроспективе - это должно было быть очевидно) - что позволяет мне использовать переменные.

Я добавил дополнительный вход в функцию "queryName" и затем получил доступ к данным, используя

result.data[queryName]

, это не ИДЕАЛ - но намного лучше, чем альтернативы.

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