中继:有条件地在突变的胖查询中包含字段

Posted

技术标签:

【中文标题】中继:有条件地在突变的胖查询中包含字段【英文标题】:Relay: Conditionally include fields in mutation's fat query 【发布时间】:2016-09-13 07:54:15 【问题描述】:

在定义 Relay 容器的片段时,我们可以有条件地包含或跳过字段。 For example,仅当showComments 变量为true 时,以下代码才包含comments

Relay.createContainer(Story, 
  initialVariables: 
    numCommentsToShow: 10,
    showComments: false,
  ,
  fragments: 
    story: (variables) => Relay.QL`
      fragment on Story 
        comments(first: $numCommentsToShow) @include(if: $showComments) 
          edges 
            node 
              author  name ,
              id,
              text,
            ,
          ,
        ,
      
    `,
  
);

我们如何有条件地在mutation's fat query 中包含字段?

使用-使用:我们可以重用相同的突变来更新任何字段并仅获取该字段作为响应,而不是使用单独的突变来更新类型的每个字段。这样做使我们能够减少有效负载。

这个问题是由另一个问题Reusing a Mutation in Relay引起的。

【问题讨论】:

【参考方案1】:

您实际上可以在 FatQuery 上使用字符串插值:

getFatQuery() 
  return Relay.QL`
    fragment on EditCommentPayload 
      comment 
        $this.props.fields.join(',')
      
    
  `;

这似乎有点反 GraphQL,但不幸的是胖查询没有变量 (related issue)。

【讨论】:

有趣!但是,它似乎并不总是有效(参考:github.com/facebook/relay/issues/1046#issuecomment-241073226)。

以上是关于中继:有条件地在突变的胖查询中包含字段的主要内容,如果未能解决你的问题,请参考以下文章

中继突变。脂肪查询。询问 REQUIRED_CHILDREN 中的所有字段

中继突变不能动态工作

删除时出现中继错误:RelayMutationQuery:胖查询中的字段名称无效

Oracle环境,求一个sql语句,如何查询某字段(bz)中包含三个英文字母的连写记录?

在另一个字段Oracle SQL中包含的一个字段中查找文本

在 SBT 生成的胖 JAR 中包含 Spark 包 JAR 文件