如何合并两个Meetup GraphQL查询以一次性获取完整活动信息
合并后的Meetup API GraphQL查询
直接把第二个请求的字段片段嵌套到第一个请求的edges.node层级即可,合并后的完整查询如下:
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 ... bare_event } } } } fragment bare_event on Event{ title dateTime eventUrl onlineVenue{ type url } venue{ ... bare_venue } } fragment bare_venue on Venue{ id name address }
请求参数
和你原有第一个搜索请求的参数完全一致,无需额外添加活动ID参数:{"query":"knitting ","lat":37.774929,"lon":-122.419418,"radius":50}
逻辑说明
Meetup GraphQL schema中,当keywordSearch的source参数指定为EVENTS时,返回的edges.node本身就是Event类型,和你第二个请求查询的单条活动属于同一类型,因此可以直接复用你定义的片段,在一次查询中拿到所有活动的全量信息,彻底避免N+1查询问题。
返回示例片段
返回结果的每条活动节点会同时包含ID和详情字段:
{ "node": { "id": "281538648!chp", "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" } } }
内容的提问来源于stack exchange,提问作者ina
相关产品推荐
相关产品推荐

