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

Posted

技术标签:

【中文标题】GraphQL 突变、参数/变量对象(带点符号)【英文标题】:GraphQL mutation, parameters / variables objects (with dot notation) 【发布时间】:2018-07-14 13:08:24 【问题描述】:

我有一个这样的 Graphql 突变:

gql 查询

mutation UpdateMother($mother_id: ID!, $child_name: String!) 
  updateMother(
    mother: 
      id: $id
      child: 
        name: $child_name
      
    
  )

效果很好,但我需要使用$child.name 而不是$child_name。这可能吗?

【问题讨论】:

【参考方案1】:

你应该可以这样称呼这个突变

mutate(
  variables: 
    mother_id: mother.id,
    child_name: child.name
  
)
  .then(() => )
  .catch(() => )

另请注意,您将 $mother_id 定义为输入,并在第 4 行使用 $id。你应该使用类似的东西:

mutation UpdateMother($mother_id: ID!, $child_name: String!) 
  updateMother(
    mother: 
      id: $mother_id
      child: 
        name: $child_name
      
    
  )

【讨论】:

这就是我在变量中所做的。我想知道是否有一种方法可以直接在突变查询中而不是在变量中处理这个问题。我正在考虑表格,这样我可以使用:...data only。 您可以做到这一点的唯一方法是,如果您的 data 变量由具有 .gql 中确切变量名称的键组成。在这种情况下,您必须拥有 data = mother_id: '1', child_name: 2 才能使用 mutate( variables: ...data )

以上是关于GraphQL 突变、参数/变量对象(带点符号)的主要内容,如果未能解决你的问题,请参考以下文章

对象作为突变中的输入变量:GraphQL - Apollo - React

Apollo GraphQL 突变(对象参数)

如何将具有多个对象的状态数组作为参数传递给graphql突变?

graphql-tools 突变解析器的参数不是 v > 0.8.0 中的对象?

Graphql type-graphql如何传递一个对象数组突变

嵌套对象的 Hasura GraphQL UPSERT 突变