您将如何使用graphQL通过“关系”实体值进行查询? 例如,假设我们有一堆人对象。然后,每个“人”都与兴趣/爱好相关,而兴趣/爱好则具有一个称为“名称”的属性。 现在假设我们要查询具有特定兴趣的每个人的姓名,如何使用GraphQL“进行”这样的查询? 使用OData就像是Persons?$ select = name&$ expand(Interests($ filter = name eq'Surfing'))..相当于GraphQL吗?
答案 0 :(得分:1)
没有等效的 。除自省外,GraphQL规范不规定模式应具有的类型,应公开的字段或应采用的参数。换句话说,没有一种方法来查询关系或执行诸如过滤,排序或分页之类的操作。如果您使用中继,它会提供its own spec以及有关分页和不同节点之间的连接等方面的更多指导,但是即使中继也无法过滤。由各个服务决定如何实现这些功能。
例如,如果我们设置一个Graphcool或Prisma服务器,我们的查询可能看起来像这样:
query {
persons(where: {
interest: {
name: "Surfing"
}
}) {
name
}
}
对Hasura服务器的查询可能如下所示:
query {
persons(where: {
interest: {
name: {
_eq: "Surfing"
}
}
}) {
name
}
}
但是没有什么可以阻止您创建支持以下查询的架构:
query {
persons(interest: "Surfing") {
name
}
}