通过关系查询GraphQL?

时间:2019-06-16 20:43:58

标签: graphql

您将如何使用graphQL通过“关系”实体值进行查询? 例如,假设我们有一堆人对象。然后,每个“人”都与兴趣/爱好相关,而兴趣/爱好则具有一个称为“名称”的属性。 现在假设我们要查询具有特定兴趣的每个人的姓名,如何使用GraphQL“进行”这样的查询? 使用OData就像是Persons?$ select = name&$ expand(Interests($ filter = name eq'Surfing'))..相当于GraphQL吗?

1 个答案:

答案 0 :(得分:1)

没有等效的 。除自省外,GraphQL规范不规定模式应具有的类型,应公开的字段或应采用的参数。换句话说,没有一种方法来查询关系或执行诸如过滤,排序或分页之类的操作。如果您使用中继,它会提供its own spec以及有关分页和不同节点之间的连接等方面的更多指导,但是即使中继也无法过滤。由各个服务决定如何实现这些功能。

例如,如果我们设置一个GraphcoolPrisma服务器,我们的查询可能看起来像这样:

query {
  persons(where: {
    interest: {
      name: "Surfing"
    }
  }) {
    name
  }
}

Hasura服务器的查询可能如下所示:

query {
  persons(where: {
    interest: {
      name: {
        _eq: "Surfing"
      }
    }
  }) {
    name
  }
}

但是没有什么可以阻止您创建支持以下查询的架构:

query {
  persons(interest: "Surfing") {
    name
  }
}