googleapis / googleapis/google-api-nodejs-client
Fitness API: Pagination is infinite with empty data
- Dominant language
- TypeScript
- Stars
- 12.2k
- Forks
- 2k
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 24
Description
#### Environment details
- OS: macOS 13.0.1
- Node.js version: v18.1.0
- npm version: 8.8.0
- `googleapis` version: 108.0.1
#### Problem
Trying to query all data from a dataSourceId via the fitness API using `nextPageToken` will result in an infinite loop. The `nextPageToken` is set even though no data is transmitted (i.e. inserted/deletedDataPoints are empty). I stopped the loop after around 2000 empty responses. Stopping after the first empty response appears to miss later data.
#### Steps to reproduce
```javascript
let collectedData = [];
let finished = false;
let pageToken = false;
while (!finished) {
let params = {
userId: "me",
dataSourceId
};
if (pageToken) {
params.pageToken = pageToken;
}
let results = await fitness.users.dataSources.dataPointChanges.list(params);
let data = results.data;
collectedData.push(data);
let nextPageToken = (data.nextPageToken && data.nextPageToken !== pageToken) ? data.nextPageToken : false;
let hasData = data.deletedDataPoint.length || data.insertedDataPoint.length;
if (!hasData && nextPageToken) {
console.warn("Got nextPageToken even though data is empty")
}
finished = !nextPageToken;
pageToken = nextPageToken;
}
```
Contributor guide
Assessment
This issue has not been assessed yet.