【问题标题】:Graphql mutations without arguments没有参数的 Graphql 突变
【发布时间】:2018-07-02 21:20:44
【问题描述】:

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

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

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

编辑:

原来我错了。我找不到任何有关它的信息,所以我只是认为这是不可能的。我希望这对其他人有帮助。在 Graphql-Ruby 中你可以这样做:

mutation {
  createFoo(input: {})
}

【问题讨论】:

  • 如果您在尝试编译架构或运行查询时遇到一些错误,您应该更新您的问题以包含该错误。

标签: graphql graphql-ruby


【解决方案1】:

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

mutation {
  createFoo : Payload
}

所以你根本不能写括号。

【讨论】:

    【解决方案2】:

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

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

    换句话说,您必须有一个参数的唯一时间是当一个在模式中定义并且它是非空的。

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 2016-03-08
      • 2018-08-30
      • 2017-02-07
      • 2018-08-04
      • 2019-08-09
      • 2019-09-29
      • 2020-05-19
      • 2017-09-22
      相关资源
      最近更新 更多