Объясните синтаксис вызова mutate на клиенте Apollo - PullRequest
0 голосов
/ 09 октября 2018
client.mutate[1]({
    mutation[2]: gql`
        mutation[3] signOut[4] {
            signOut[5] {
                success[6]
            }
        }
    `,
});

Числа в скобках - это мои аннотации к различным частям запроса.Мои лучшие догадки об их значении приведены ниже.Поправь меня там, где я ошибаюсь или неполный.Мои самые большие сомнения в курсиве:

[1] client.mutate В клиенте Apollo есть метод mutate, потому что клиент Apollo обрабатывает мутации иначе, чем запросы

[2] mutation Просто свойство объекта с именем mutation, которое передается клиенту Apollo

[3] mutation Поле корневой мутации на сервере

[4] signOut Поле, доступное в корневом поле мутации. Я удивлен, что signOut записывается сразу после мутации, а не в отдельной строке в паре скобок

[5] signOut Я думаю, поле signOut насервер разрешает возвращать другое поле с именем signOut? Я правильно понимаю?Это нормально?

[6] success Внутреннее поле singOut разрешает возвращать объект с именем success

1 Ответ

0 голосов
/ 09 октября 2018

Относительно [4] signOut и [5] signOut - это имя, которое вы даете мутации.

Например:

mutation signOut {
  signOut {
    success
  }
}

Это та же самая мутация, что и

mutation logOut {
  signOut {
    success
  }
}

* * * * * method, запускаемый на обеих мутациях, signOut, но у них разные имена (logOut & signOut).

Все остальные пункты верны.

Примечания:

name мутации (или запроса) только для клиента, у сервера нет определенияименование мутаций.

Суть в том, чтобы иметь 2 уровня в одной мутации, заключается в том, что вы можете инициировать несколько мутаций в одной мутации, например: при наличии необходимого the user signs out and unsubscribes to notifications мы могли бы создать одну мутацию, например:

mutation logOutAndUnsubscribe {
  signOut {
    success
  }
  unsubscribe {
    success
  }
}

В этом случае мы называем мутацию logOutAndUnsubscribe, которая вызывает 2 мутации signOut и unsubscribe.И снова сервер реализует signOut и unsubscribe, но имеет нулевые знания о logOutAndUnsubscribe.

...