mirror of
https://github.com/zhigang1992/probot.git
synced 2026-06-14 18:08:58 +08:00
In current example, the `for` loop won't exit unless the missing `break` statement is added.
1.5 KiB
1.5 KiB
next
| next |
|---|
| docs/extensions.md |
Pagination
Many GitHub API endpoints are paginated. The github.paginate method can be used to get each page of the results.
module.exports = robot => {
robot.on('issues.opened', context => {
context.github.paginate(
context.github.issues.getAll(context.repo()),
res => {
res.data.issues.forEach(issue => {
context.log('Issue: %s', issue.title)
})
}
)
})
}
Accumulating pages
The return value of the github.paginate callback will be used to accumulate results.
module.exports = robot => {
robot.on('issues.opened', async context => {
const allIssues = await context.github.paginate(
context.github.issues.getAll(context.repo()),
res => res.data
)
console.log(allIssues)
})
}
Early exit
Sometimes it is desirable to stop fetching pages after a certain condition has been satisfied. A second argument, done, is provided to the callback and can be used to stop pagination. After done is invoked, no additional pages will be fetched.
module.exports = robot => {
robot.on('issues.opened', context => {
context.github.paginate(
context.github.issues.getAll(context.repo()),
(res, done) => {
for (let issue of res.data) {
if (issue.body.includes('something')) {
console.log('found it:', issue)
done()
break
}
}
}
)
})
}