字段选择一旦成立,嵌套查询 就自然出现了。
因为有些字段不是叶子值,而是另外一个对象,甚至对象列表。
例如:
query ResidentDeskScreen {
resident(id: "r-1001") {
id
name
tickets(status: OPEN) {
id
title
status
device {
id
name
location
}
}
}
}这张问询单的意思是:
- 先找住户
- 再看这个住户的开放工单
- 再看每个工单关联的设备
- 再拿设备名称和位置
ASCII 路线图:
resident("r-1001")
└── tickets(status: OPEN)
└── device
├── id
├── name
└── location你会发现,GraphQL 很像总台里的“智能转接”:
- 先查住户档案
- 再转工单系统
- 再转设备档案
- 最后统一拼装回执
这也是 GraphQL 很适合复杂业务域的原因。
因为真实系统里,数据本来就不是平的,而是有关系网的。