Сделайте вызов мутации несколько раз в зависимости от длины переменной - PullRequest
1 голос
/ 18 октября 2019

Есть ли способ для меня вызвать мутацию несколько раз от внешнего интерфейса? У меня есть массив пользователей, которых нужно добавить в приложение, и в настоящее время мутация позволяет добавлять только одного пользователя за раз (мы могли бы изменить мутацию, но они хотят посмотреть, смогу ли я сначала выполнить пакетную обработку во внешнем интерфейсе).

Это моя текущая мутация:

export const SHARE_APP = gql`
  mutation ShareApp(
    $appId: String!
    $userId: String!
  ) {
    shareApp(
      appId: $appId
      userId: $userId
    ) {
      updatedApp {
        id
      }
    }
  }
`;

Можно ли это сделать на внешнем интерфейсе или мне нужно изменить код gql для принятия массива для идентификаторов?

1 Ответ

1 голос
/ 18 октября 2019

Компонент Mutation, хук useMutation и graphql HOC дают вам метод, который можно использовать столько раз, сколько вам нужно.

const [share] = useMutation(SHARE_APP)
await Promise.all(appIds.map((appId) => share({
  variables: {
    userId,
    appId,
  },
})))

Что касается пакетирования этих запросов, Apollo не поддерживает это "из коробки", поэтому вам придется использовать ссылку типа apollo-link-batch-http.

...