我有两个单独的工作调用,定义如下,我试图弄清楚如何组合。该模式特定于Meetup API,但我认为通用 GraphQL-fu 可以在这里提供帮助!
- 调用 1 获取
N
事件 ID列表
query($query:String!,$lat: Float!,$lon:Float!,$radius:Int!) {
keywordSearch(filter: {query: $query,lat: $lat, lon: $lon, radius:$radius source:EVENTS, eventType:PHYSICAL}) {
count
edges{
node{
id
}
}
}
}
作为示例查询:
{"query":"knitting ","lat":37.774929,"lon":-122.419418,"radius":50}
以下是结果(编织聚会在旧金山并不常见):
{
"data": {
"keywordSearch": {
"count": 3,
"edges": [
{
"node": {
"id": "281538648!chp"
}
},
{
"node": {
"id": "281467251!chp"
}
},
{
"node": {
"id": "281455979!chp"
}
}
]
}
}
}
id
Call 2 从Call 1中返回的事件中获取额外的 Event 信息
query($eventId: ID) {
event(id: $eventId) {
... bare_event
}
}
fragment bare_event on Event{
title
dateTime
eventUrl
onlineVenue{
type
url
}
venue{
... bare_venue
}
}
fragment bare_venue on Venue{
id
name
address
}
因此,例如,从 Call1 中获取第一个 ID,使用{"eventId":"281538648!chp"}
,我们得到
{
"data": {
"event": {
"title": "Monday Knitting Meetup (Mountain View)",
"dateTime": "2021-10-25T19:00-07:00",
"eventUrl": "https://www.meetup.com/scv-knitters/events/281538648",
"onlineVenue": null,
"venue": {
"id": "25006220",
"name": "Panera Bread (YET ANOTHER PANERA!!)",
"address": "1035 El Monte Ave"
}
}
}
}
我们如何在调用 1 中包含调用 2 的详细事件信息以及每个事件 ID?
我认为 GraphQL 的意义在于,我不必为从搜索列表N+1
中获取N
相关项目的附加信息进行查询(我是新手!)
您如何将这两个调用组合到一个查询中,以便除了仅提取事件 ID 之外,我还可以为每个搜索列表提取其他事件信息?