使用数组作为 GraphQL 查询的变量

Posted

技术标签:

【中文标题】使用数组作为 GraphQL 查询的变量【英文标题】:Use array as variable for GraphQL Query 【发布时间】:2019-07-29 10:05:29 【问题描述】:

我想查询多个变量的嵌套字段。 在这种情况下,我想查询 RPR,但仅在给定嵌套区域的标签时才返回 RPR。嵌套区域(字段:标签)的一个变量可以正常工作,但是如何过滤同一字段的多个变量

我的看法是,当我调用查询客户端(在我的情况下是通过 Apollo)时,我想将一个数组作为变量,让后端的查询通过该数组并返回基于数组中给定的任何变量。

然后解析器什么也不做:

rPRs: (root, args, ctx, info) => 
 return ctx.db.query.rPRs(args, info);

架构的相关部分:

    type RPR 
      id: ID! @Unique
      RPRID: String! @Unique
      state: String
      region: Region!
      resource: Resource!
      price: Float
      theme: String
      editionTitle: String
      information: String
    

    type Region 
      id: ID! @Unique
      regionID: String! @Unique
      label: String! @Unique
      name: String! @Unique
      aov: Float!
      aov_multiplier: Float!
    

检索所有带有嵌套区域的“RPR”的当前查询:


    query ADVICE_RESOURCES_QUERY($theme: String, $regio: String) 
      rPRs(where: 
        theme: $theme,
        region: 
          label: $regio
        
      )
      
        RPRID
        region 
          label
        
      
    

【问题讨论】:

【参考方案1】:

您应该能够使用label_in 过滤器并向其提供字符串数组。您的 where 将如下所示:

where: 
    theme: $theme,
    region: 
      label_in: $regio
    
  

【讨论】:

以上是关于使用数组作为 GraphQL 查询的变量的主要内容,如果未能解决你的问题,请参考以下文章

Apollo GraphQL 中带有变量的嵌套查询

如何在 GraphQL 查询变量中使用数组

GraphQL/Graph.cool 查询过滤嵌套关系

GraphQL graph.cool 用户查询不适用于 Auth0 令牌

Graph API - 在过滤器查询中使用变量

GraphQL 错误:变量 'id' 已强制 NonNull 类型 'ID!' 的 Null 值