如何通过GitHub GraphQL API获取项目Issue的Status字段?
解决GitHub GraphQL API查询Project V2 Status字段的问题
错误原因拆解
- 你在
ProjectV2ItemFieldSingleSelectValue类型下调用了不存在的status字段,这是导致undefinedField错误的直接原因。 - 你尝试的
ProjectV2ItemFieldCustomSingleSelectValue类型并非GitHub GraphQL API定义的合法类型,自然无法返回数据。
正确查询写法
针对GitHub Project V2的单选型自定义字段(比如「Status」),正确的查询需要使用ProjectV2ItemFieldSingleSelectValue类型,并读取官方定义的name(选项显示名称)或optionId(选项唯一标识)字段:
fieldValueByName(name: "Status") { ... on ProjectV2ItemFieldSingleSelectValue { name optionId } }
如果需要同时获取该字段的元信息(比如字段本身的名称、描述),可以扩展查询:
fieldValueByName(name: "Status") { ... on ProjectV2ItemFieldSingleSelectValue { name optionId field { ... on ProjectV2FieldSingleSelect { name description } } } }
完整可运行查询示例
结合你提供的查询结构,修正后的完整版本如下:
query($cursor: String) { organization(login: "your-organization") { projectV2(number: 123) { items(first: 100, after: $cursor) { nodes { id content { ... on Issue { title number url } } fieldValueByName(name: "Status") { ... on ProjectV2ItemFieldSingleSelectValue { name optionId } } } pageInfo { hasNextPage endCursor } } } } }
权限排查建议
你最初遇到的KeyError("The 'data' field is missing from the response. Check your query or token permissions.")错误,需确认访问Token的权限:
- 个人访问Token(PAT)必须勾选
read:project权限 - GitHub App需开启
projects的读取权限
避坑提醒
- 区分
ProjectV2ItemFieldSingleSelectValue(项目项的字段值)和ProjectV2FieldSingleSelect(字段元数据)两种类型 - 自定义单选型字段没有
status或customFieldSingleSelectValue这类非官方字段,仅可使用API文档定义的name、optionId、field等字段 - 字段名称
"Status"需严格匹配项目中自定义字段的显示名称(大小写敏感)
内容的提问来源于stack exchange,提问作者Javier V.
相关产品推荐
相关产品推荐

