对交叉引用数据的GraphQL查询
请在下面找到一个基本的简化问题和一个问题: 垄断的例子 数据类型: 使用者对交叉引用数据的GraphQL查询,graphql,Graphql,请在下面找到一个基本的简化问题和一个问题: 垄断的例子 数据类型: 使用者 名字 房屋(一对多) 街头 名字 房子 街道(一对一) 请注意,在我的数据模型中,用户和街道之间没有引用(可能垄断不是最好的例子-。-) 问题: 一个用户可以在不同的街道上拥有多个房屋。如何查询特定用户拥有房屋的街道列表 通缉结果: { "data": { "User": { "name": "The Hat", "streets": [
- 名字
- 房屋(一对多)
- 名字
- 街道(一对一)
{
"data": {
"User": {
"name": "The Hat",
"streets": [
{
name: "Bow Street"
},
{
name: "Oxford Street"
},
{
name: "Park Lane"
},
]
}
}
}
这可能吗?像这样获取关系数据通常是通过在查询中使用嵌套字段来处理的。在查询中遍历数据图的能力是GraphQL的最大优点之一 一般来说,是了解其工作原理的有用资源 让我们看看一些不同的可能查询 查询特定用户拥有房屋的街道列表 在这里,我们使用传入作为参数来查询与特定用户相关的小时数相关的街道,结果如下:
{
"data": {
"allStreets": [
{
"name": "Bow Street"
},
{
"name": "Oxford Street"
},
{
"name": "Park Lane"
}
]
}
}
我们可以看到,我们得到了一张街道列表。我们还可以在allStreets
查询中包含house字段,以获得该信息
查询特定用户对象及其上有房屋的街道列表
在这里,我们通过id指定一个用户,因此结果的顶级对象是单个用户对象。此外,我们还获得了用户拥有房屋的街道列表:
{
"data": {
"User": {
"name": "The Hat",
"houses": [
{
"street": {
"name": "Bow Street"
}
},
{
"street": {
"name": "Oxford Street"
}
},
{
"street": {
"name": "Park Lane"
}
}
]
}
}
}
值得注意的是,响应的结构精确地遵循了查询的结构。因此graphQL足够聪明,能够理解:用户->房屋->位置?对不起!我没有正确地遵循所描述的数据模型。让我更新我的答案:)
query {
User(id: "user-id") {
name
houses {
street {
name
}
}
}
}
{
"data": {
"User": {
"name": "The Hat",
"houses": [
{
"street": {
"name": "Bow Street"
}
},
{
"street": {
"name": "Oxford Street"
}
},
{
"street": {
"name": "Park Lane"
}
}
]
}
}
}