如何使用过滤器获取graphql查询

时间:2019-03-22 18:13:48

标签: reactjs graphql

我无法从我的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过滤名称,以便我的输出只给我一个结果。

1 个答案:

答案 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方法说“仅查找具有此名称的子节点”。

相关问题