15

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

在我的特殊情况下,我删除并创建了 2fa 令牌端点。删除和创建令牌都没有参数,因为它们依赖于登录的用户 ID。它们要么破坏要么在数据库中创建记录。所以我更喜欢它们是突变。但这不可能吗?

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

编辑:

所以事实证明我错了。我找不到任何有关它的信息,所以我只是认为这是不可能的。我希望这对其他人有帮助。在 Graphql-Ruby 中,您可以执行以下操作:

mutation {
  createFoo(input: {})
}
4

3 回答 3

9

如果一个突变没有声明任何参数,那么它必须是这样的:

mutation {
  createFoo : Payload
}

所以你根本不能写括号。

于 2021-02-19T08:50:47.063 回答
8

GraphQL 规范中没有任何内容特别需要一个或多个参数来进行突变。query就参数而言, or没有什么特别之处mutation——它们本身都是字段,因此可以像任何其他字段一样接受(或不接受)参数。从规范:

默认情况下,输入(例如字段参数)始终是可选的。但是,需要非空输入类型。除了不接受null值外,也不接受遗漏。为简单起见,可空类型始终是可选的,非空类型始终是必需的。

换句话说,唯一需要一个参数的时候是在模式中定义一个参数并且它是非空的。

于 2018-01-23T23:34:52.960 回答
1

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

const query = gql`
  query {
    queryName {
      someProperty
    }
  }
`
于 2021-03-26T18:25:18.860 回答