You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义GraphQL拼接模式路径以传入VIN数组而非逐个查询

解决方案

要实现批量查询VIN数组的销售历史,你需要使用HotChocolate的@batchDelegate指令(替代普通@delegate),它专为批量场景设计,能自动收集所有待查询的VIN并发起单次请求。

1. 修改Vehicle类型扩展

替换原有@delegate配置为@batchDelegate,指定批量查询规则:

extend type Vehicle {
    saleHistory: [SaleHistory] 
        @batchDelegate(
            schema: "saleHistory"
            query: "vehicleSalesByVins(vins: $vins)"
            keyField: "vin"
            resultField: "vin"
        )
}

参数解释:

  • schema:目标销售历史服务的配置名称(与你现有配置一致)
  • query:目标服务的批量查询入口,$vins会被自动替换为收集到的所有VIN数组
  • keyField:当前Vehicle类型中用于匹配的字段(此处为vin)
  • resultField:目标服务返回的SaleHistory类型中,用于与Vehicle匹配的关联字段(此处为vin)

2. 确认目标服务的查询定义

确保销售历史服务的vehicleSalesByVins接口正确接收VIN数组并返回对应结果:

type Query {
    vehicleSalesByVins(vins: [String!]!): [SaleHistory!]!
}

3. 验证批量查询效果

执行预期的查询语句后,HotChocolate会自动完成以下操作:

  • 收集所有返回的Vehicle对象的vin值
  • 单次调用销售历史服务的vehicleSalesByVins接口,传入VIN数组
  • 根据vin字段自动将销售历史结果匹配到对应的Vehicle对象上

这样就解决了单VIN逐个查询的性能问题,实现了批量数据库查询的优化。


内容的提问来源于stack exchange,提问作者Zach Gardner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:52:49