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

如何使用JavaScript通过Bitbucket API拉取PR全部嵌套层级评论?

实现思路

核心是递归遍历嵌套的comments数组,无需额外依赖,几十行代码即可实现。


步骤1:拉取全量活动数据

调用/rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/activities接口即可,若PR活动量较大,可在请求参数中添加limit=1000减少分页次数,多页数据合并为完整的activities数组后再处理即可。

步骤2:嵌套评论提取代码实现

// 递归提取单个评论节点下的所有评论(包含自身+所有层级子回复)
function extractAllComments(commentNode) {
  const allComments = [commentNode]
  // 遍历当前评论的子回复列表递归处理
  if (Array.isArray(commentNode.comments) && commentNode.comments.length) {
    commentNode.comments.forEach(child => {
      allComments.push(...extractAllComments(child))
    })
  }
  return allComments
}

// 主逻辑:从接口返回的活动列表中提取全量评论
function getAllPrComments(activities) {
  const comments = []
  activities.forEach(activity => {
    // 仅筛选评论类型的活动
    if (activity.action === 'COMMENTED' && activity.comment) {
      comments.push(...extractAllComments(activity.comment))
    }
  })
  return comments
}

用法示例

// activities为接口返回的全量活动数组
const allNestedComments = getAllPrComments(activities)
// 输出结果为扁平化数组,包含所有父评论、子回复、深层嵌套回复,保留接口返回的所有原始字段
console.log('全量评论总数:', allNestedComments.length)

补充说明

如果需要保留评论的层级结构,不需要扁平化输出,直接收集所有activity.comment根节点即可,无需做递归扁平化处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:09:00