我无法从我的graphql中查询查询,我想知道为什么以下代码使我失败。
同时
query
{
allCockpitHello{
edges{
node{
id
}
}
}
}
为我提供了
{
"data": {
"allCockpitHello": {
"edges": [
{
"node": {
"id": "Cockpit__Hello__5c65992264343100000001c3"
}
},
{
"node": {
"id": "Cockpit__Hello__5c90b32864343100000001ab"
}
}
]
}
}
}
我无法通过
进行任何查询query
{
allCockpitHello{
edges{
node ( id :"Cockpit__Hello__5c90b32864343100000001ab"){
Name{
value
}
}
}
}
}
我想按ID过滤名称,以便我的输出只给我一个结果。
答案 0 :(得分:0)
如果您已经知道特定的节点ID,则使用通用约定(来自Relay)来进行名为node
的顶级查询,该查询返回其对象。 (您可以直接“跳转”到该对象,而不必运行整个查询就可以到达该对象。)一个陷阱是,您还必须知道对象的类型。
query GetHello($id: ID!) {
node(id: $id) {
... on Hello {
name {
value
}
}
}
}
如果您从架构中不知道对象类型,则可以返回a built-in __typename
field on all objects。
query { allCockpitHello { edges {
node {
__typename
id
}
} } }
正如@HemantParashar在评论中指出的那样,GraphQL本身更是API层,而不是查询语言本身。服务可以在任何字段上定义所需的任何参数,但是没有诸如过滤和排序之类的内置选项。没有通用的GraphQL方法说“仅查找具有此名称的子节点”。