如何让GitLab GraphQL查询的ciVariables返回键值对而非节点结构?
问题解答:GitLab GraphQL能否返回键值对格式的CI变量?
不能通过GitLab原生GraphQL查询直接返回你期望的键值对结构。
GitLab的GraphQL Schema中,ciVariables字段的返回结构是固定的——它会返回一个包含nodes数组的对象,数组内每个元素是包含key和value字段的对象。服务端没有提供直接将这个数组转换为键值对对象的查询选项,因为GraphQL的返回结构由服务端定义的Schema严格约束,无法通过查询语法修改返回的结构形态。
可行的解决方案:客户端数据转换
你可以在获取到GraphQL返回的原始数据后,在客户端对ciVariables进行转换,得到你想要的结构。以JavaScript为例,转换代码如下:
// 假设response是从GitLab GraphQL接口获取的原始响应数据 const processedData = { ...response.data, projects: { nodes: response.data.projects.nodes.map(project => ({ ...project, ciVariables: project.ciVariables.nodes.reduce((result, variable) => { result[variable.key] = variable.value; return result; }, {}) })) } };
其他编程语言的转换逻辑类似:遍历ciVariables.nodes数组,将每个元素的key作为目标对象的属性名,value作为对应属性值,最终生成你期望的键值对结构。
内容的提问来源于stack exchange,提问作者nrgyzer
相关产品推荐
相关产品推荐

