You need to enable JavaScript to run this app. 如何在GraphQL查询中让返回的指定字段以列表形式输出
优惠活动
大模型
产品
解决方案
定价
更多

如何在GraphQL查询中让返回的指定字段以列表形式输出

GraphQL返回字段转列表格式实现方法

方案1:修改Schema字段定义(最简适配)

直接将Identity类型中需要返回列表的字段类型从String调整为[String],同时在Resolver中加工返回结构即可,原有查询语句无需修改。
修改后的类型定义:

type Identity{
    First: [String],
    Last: [String],
    Age: [String]
}

# 根查询定义无需改动
getIdentityDetails:[Identity]

调整后的Resolver逻辑:

getIdentityDetails: async () =>{
    try {
        const identity = await Identity_Table.findAll();
        // 遍历结果将单个字段值包装为数组
        return identity.map(item => ({
            First: [item.First],
            Last: [item.Last],
            Age: [item.Age]
        }))
    }catch(err){
        console.log(err);
    }
},

使用原有查询语句即可得到期望的返回格式:

{
  getIdentityDetails {
    First
    Last
    Age
  }
}

方案2:字段级参数控制(兼容多场景)

如果需要保留原有单值返回能力,可通过给字段增加控制参数的方式实现按需返回列表格式,无需改动根查询逻辑。
调整后的类型定义:

type Identity{
    # 增加asList参数,默认关闭返回列表
    First(asList: Boolean = false): [String]
    Last(asList: Boolean = false): [String]
    Age(asList: Boolean = false): [String]
}

getIdentityDetails:[Identity]

新增字段级Resolver:

// 根查询Resolver无需改动
getIdentityDetails: async () =>{
    try {
        return await Identity_Table.findAll();
    }catch(err){
        console.log(err);
    }
},
// 新增Identity类型的字段解析逻辑
Identity: {
    First: (parent, { asList }) => asList ? [parent.First] : parent.First,
    Last: (parent, { asList }) => asList ? [parent.Last] : parent.Last,
    Age: (parent, { asList }) => asList ? [parent.Age] : parent.Age
}

需要返回列表时,查询语句携带参数即可:

{
  getIdentityDetails {
    First(asList: true)
    Last(asList: true)
    Age(asList: true)
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 03:54:03