没有参数的 Graphql 突变

Graphql mutations without arguments

通常查询是在获取数据时进行,而变异是在操作数据时进行。但是我如何在没有任何参数的情况下实现突变呢?

在我的特定情况下,我删除并创建了 2fa 令牌端点。删除和创建令牌都没有参数,因为它们依赖于登录的用户 ID。他们都在数据库中销毁或创建记录。所以我宁愿他们是突变。但这不可能吗?

我正在使用 Graphql-Ruby。但这更像是一个一般的 Graphql 问题。

编辑:

原来我错了。我找不到任何关于它的信息,所以我只是假设这是不可能的。我希望这可以帮助别人。在 Graphql-Ruby 你可以这样做:

mutation {
  createFoo(input: {})
}

GraphQL spec 中没有任何内容特别需要一个或多个变元参数。在参数方面,querymutation 没有什么特别之处——它们本身都是字段,因此可以像任何其他字段一样接受(或不接受)参数。来自规范:

Inputs (such as field arguments), are always optional by default. However a non‐null input type is required. In addition to not accepting the value null, it also does not accept omission. For the sake of simplicity nullable types are always optional and non‐null types are always required.

换句话说,唯一一次你有一个论点是当一个在模式中定义时它是非空。

如果一个 mutation 没有声明任何参数,那么它必须看起来像这样:

mutation {
  createFoo : Payload
}

所以你根本就不能写括号。

使用 React 中的 graphql-request 包,您可以:

const query = gql`
  query {
    queryName {
      someProperty
    }
  }
`