忽略使用apollo客户端进行的变异查询的结果?

时间:2018-09-04 14:25:10

标签: graphql apollo-client

我想使用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字符串中,我没有定义要接收的信息。该语法有效吗?还是我需要明确声明要忽略结果?

2 个答案:

答案 0 :(得分:0)

突变的返回类型必须定义至少一个字段,并且您必须在查询中从中至少选择一个字段。 (请参见§3.6 of the spec。)

如果您同时控制服务器和客户端,并且该变异实际上不返回任何内容,则可以定义一个总是正确的虚假ok: Boolean!。您可能会返回类似用户对象的内容,其中也包含权利列表,在这种情况下,您可以选择(并忽略)用户ID。

答案 1 :(得分:0)

我认为这可能是ignoreResults的目的。

ignoreResults-如果为true,则返回的数据属性将不会随着变异结果更新。

因此(使用此选项)突变如下所示:

client.mutate({
    mutation: MutationDocument
    variables: {
        userId: username,
        distributor: distributor,
        licenseType: licenseType,
        duration: duration,
    },
    ignoreResults: true
});