【问题标题】:How to query object with contains specific key in array in Graphql如何在 Graphql 的数组中查询包含特定键的对象
【发布时间】:2020-06-01 20:39:00
【问题描述】:

我有对象要查询:

query demo {
   demo {
     name # string
     words # array of strings
   }
}

我将此查询发送到 API,属性 words 是字符串数组。

我想查询words(字符串数组)属性中包含hello的所有对象。

可以在客户端使用例如@include

怎么做?

【问题讨论】:

  • 它要么需要在服务器端设置以过滤单词的结果(在那里硬编码或通过参数,您需要在其中进行不同的查询),或者您可以进行一般查询您拥有的并过滤结果

标签: graphql react-apollo


【解决方案1】:

@skip@include 指令用于根据提供的 if 参数显式跳过或包含特定字段。它们通常与变量一起使用,这样同一个文档就可以根据提供的变量有效地生成具有不同选择集(字段集)的查询。

例如,您可以像这样编写单个查询

query demo($includeName: Boolean!) {
   demo {
     name @include(if: $includeName)
     words
   }
}

只需为includeName 传递一个不同的值,而不是编写两个单独的查询:

query demoWithName {
   demo {
     name
     words
   }
}

query demoWithoutName {
   demo {
     words
   }
}

GraphQL 提供了内置机制,用于指定要返回的类似片段的字段以及 @skip@include 指令。但是,它没有任何内置的过滤机制(或者,就此而言,没有排序、分页等)。服务器必须通过向字段添加适当的参数并更改字段解析逻辑以考虑这些参数的值来实现过滤字段的方法。

【讨论】:

    猜你喜欢
    • 2020-04-14
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多