Игнорировать результаты запроса мутации с использованием клиента apollo? - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу использовать graphql для запуска действия addLicenseCodeOneTimeUsage на сервере. Я не знаю, что сервер ответит, и мне не нужно никакого ответа. Как вы можете видеть, я не перечисляю свойства в addLicenseCodeOneTimeUsage{}.

const client = new ApolloClient({
    link: link,
    cache: new InMemoryCache(),
});

yield client.mutate({
    /* tslint:disable */
    mutation: gql`
        }
        mutation licensemutation($distributor: String!, $licenceType: String!, $duration: String!, $userId: String!) {
            addLicenseCodeOneTimeUsage(distributor: $distributor, licenseType: $licenseType, duration: $duration, userId: $userId) {
            }
        }
    `,
    /* tslint:enable */
    variables: {
        userId: username,
        distributor: distributor,
        licenseType: licenseType,
        duration: duration,
    },
});
  • Оправдано ли то, что я написал, или у меня есть очевидные неправильные представления о том, как работает GraphQL или как его следует использовать?
  • В строке graphql я не определяю какую информацию получать. Этот синтаксис действителен или мне нужно явно указать, что я хочу игнорировать результаты?

1 Ответ

0 голосов
/ 04 сентября 2018

Тип возврата мутации должен определять хотя бы одно поле, и вы должны выбрать хотя бы одно поле из него в запросе. (См. §3.6 спецификации .)

Если вы управляете и сервером, и клиентом, а мутация действительно ничего не возвращает, вы можете определить искусственный ok: Boolean!, который всегда верен. Вы можете вернуть что-то вроде пользовательского объекта, который также содержит список прав, и в этом случае вы можете просто выбрать (и проигнорировать) идентификатор пользователя.

...