没有参数的 Graphql 突变

Posted

技术标签:

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

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

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

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

编辑:

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

mutation 
  createFoo(input: )

【问题讨论】:

如果您在尝试编译架构或运行查询时遇到一些错误,您应该更新您的问题以包含该错误。 【参考方案1】:

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

mutation 
  createFoo : Payload

所以你根本不能写括号。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

Daniel Rearden : 你能帮帮我吗---> ***.com/questions/49280814/…【参考方案3】:

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

const query = gql`
  query 
    queryName 
      someProperty
    
  
`

【讨论】:

以上是关于没有参数的 Graphql 突变的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL - 参数未在突变中传递到后端

如何在没有参数的情况下进行graphql突变? (Vue 阿波罗)

突变查询 graphql-java

GraphQL 突变、参数/变量对象(带点符号)

GraphQL - 将枚举值作为参数直接传递给突变?

如何在 GraphQL 中使用可选参数实现突变?