使用jira-client获取Jira问题全部自定义字段的方法咨询
解决Jira-Client获取问题全部自定义字段的方案
方法1:通过getIssue()指定扩展字段参数
默认getIssue()返回的字段可能不全,你可以通过指定fields参数为*all来获取所有字段,包括自定义字段:
const JiraClient = require('jira-client'); const jira = new JiraClient({ protocol: 'https', host: 'your-jira-domain.com', username: 'your-username', password: 'your-api-token', apiVersion: '2', strictSSL: true }); async function fetchFullIssue() { try { // 指定fields为*all获取所有字段 const issue = await jira.getIssue('SAS-13654', { fields: '*all' }); // 筛选出所有自定义字段(通常以customfield_开头) const customFields = Object.fromEntries( Object.entries(issue.fields).filter(([key]) => key.startsWith('customfield_')) ); console.log('所有自定义字段:', customFields); } catch (err) { console.error('获取问题失败:', err); } } fetchFullIssue();
方法2:用searchJira()返回完整字段
在搜索时指定fields参数为*all,精准查询目标问题:
async function searchFullIssue() { try { const searchResult = await jira.searchJira('key = SAS-13654', { fields: '*all' }); if (searchResult.issues.length > 0) { const issue = searchResult.issues[0]; const customFields = Object.entries(issue.fields) .filter(([key]) => key.startsWith('customfield_')) .reduce((acc, [key, value]) => { acc[key] = value; return acc; }, {}); console.log('自定义字段:', customFields); } } catch (err) { console.error('搜索问题失败:', err); } } searchFullIssue();
方法3:预先获取自定义字段元数据(可选)
如果需要对应自定义字段的ID与名称,可以直接调用Jira API的字段端点(用jira-client的makeRequest方法):
async function getCustomFieldMetadata() { try { // 获取所有字段元数据 const fields = await jira.makeRequest('GET', '/rest/api/2/field'); // 过滤出自定义字段 const customFieldsMeta = fields.filter(field => field.custom); console.log('自定义字段元数据:', customFieldsMeta); // 建立ID到名称的映射,方便后续解析字段 const fieldIdToName = customFieldsMeta.reduce((acc, field) => { acc[field.id] = field.name; return acc; }, {}); } catch (err) { console.error('获取字段元数据失败:', err); } } getCustomFieldMetadata();
注意事项
- Jira中自定义字段的键通常以
customfield_开头,比如customfield_12345 - 若Jira配置了自定义字段别名,返回结果可能会用别名作为键,但优先以ID为准
- 确保你的API账号拥有访问目标问题所有字段的权限
内容的提问来源于stack exchange,提问作者arjun singh
相关产品推荐
相关产品推荐

