没有参数的Graphql变种

时间:2018-01-23 22:51:42

标签: graphql graphql-ruby

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

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

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

修改

事实证明我错了。我无法找到有关它的任何信息,所以我只是认为它是不可能的。我希望这有助于其他人。在Graphql-Ruby中,你可以这样做:

mutation {
  createFoo(input: {})
}

3 个答案:

答案 0 :(得分:5)

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

mutation {
  createFoo : Payload
}

所以你绝对不能写括号。

答案 1 :(得分:2)

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

  

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

换句话说, 拥有参数的唯一时间是在模式中定义一个参数时,它是非空的。

答案 2 :(得分:0)

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

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