假设我有以下 json 数据:
"data": {
"continents": [
{
"code": "AF",
"name": "Africa",
},
{
"code": "EU",
"name": "Europe"
},
// ...
]
}
使用 code : "AF"
获取列表项的正确 GraphQL 查询是什么?换句话说,如何产生以下结果:
"data": {
"code": "AF",
"name": "Africa"
}
到目前为止,我已经:
query {
continents {
code
name
}
}
但这只是返回完整的数组。
我一直在运行我的示例:https://lucasconstantino.github.io/graphiql-online/
答案 0 :(得分:0)
对于当前的示例,您可以这样做
query {
continents(filter: {code: {eq: "AF"}}) {
name
}
}
我建议查看有关参数的 documentation,因为它们解释得很好。
答案 1 :(得分:0)
事实证明,列表/数组上没有定义内置的 filter
函数! GraphQL(查询语言)基本上是关于在对象 [Schemas and Types | GraphQL] 上选择字段。
只需要看一下GraphQL schema in question:
type Query {
continents(filter: ContinentFilterInput): [Continent!]!
// ...
}
type Continent {
code: ID!
name: String!
countries: [Country!]!
}
input ContinentFilterInput {
code: StringQueryOperatorInput
}
input StringQueryOperatorInput {
eq: String
ne: String
in: [String]
nin: [String]
regex: String
glob: String
}
// ...
我们看到查询 continents
有一个输入类型为 filter
的参数 ContinentFilterInput
。这些信息足以让我们开始构建过滤查询:
query {
continents(filter: ...) {
code
name
}
}
在检查 ContinentFilterInput
时,我们观察到它有一个输入类型为 code
的字段 StringQueryOperatorInput
:
query {
continents(filter: { code: ...}) {
code
name
}
}
最后,我们在输入类型 eq
中找到了一个字段 StringQueryOperatorInput
,它是一个标量类型 (String
),我们就完成了:
query {
continents(filter: { code: { eq: "AF" } }) {
code
name
}
}