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

如何在StepZen中合并两个REST接口返回列表并执行转换?

解决方案

要实现两个列表的合并与转换,你可以直接在getMerged查询上结合@materializer和@transform,无需保留原来的Merged类型。具体步骤如下:

  1. 定义合并后的结果类型
    创建一个包含所有需要字段的类型,用于承载合并后的数据:
type CombinedItem {
  id: ID!
  value: Int
  otherValue: Int
}
  1. 修改getMerged查询
    将getMerged的返回类型改为[CombinedItem],通过@materializer同时获取两个列表的数据,再用@transform执行你的jq转换逻辑:
type Query {
  getFirstList: [FirstList] @rest(endpoint: ".../getFirst_list")
  getSecondList: [SecondList] @rest(endpoint: ".../getSecond_list")
  
  getMerged: [CombinedItem]
    @connector(type: "echo")
    @materializer(
      query: """
        query {
          firstList: getFirstList
          secondList: getSecondList
        }
      """
    )
    @transform(
      jq: ".firstList as $list1 | .secondList as $list2 | $list1 + $list2 | group_by(.id) | map(add)"
    )
}

效果说明

执行getMerged查询后,会返回合并并转换后的数组:

{
  "data": {
    "getMerged": [
      { "id": "1", "value": 1, "otherValue": 1 },
      { "id": "2", "value": 2, "otherValue": null },
      { "id": "3", "value": 3, "otherValue": 3 },
      { "id": "4", "value": null, "otherValue": 4 }
    ]
  }
}

关键说明

  • @materializer用于在getMerged中调用已定义的getFirstList和getSecondList查询,获取两个原始列表数据。
  • @transform的jq表达式会直接处理@materializer返回的结果,完成合并、分组和字段合并操作,这一步在StepZen服务端执行,无需前端处理。
  • 移除原来的Merged类型,直接返回合并后的结果即可。

内容的提问来源于stack exchange,提问作者J.F.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:30:23