Forum Discussion

FoxEddy's avatar
FoxEddy
Frequent Visitor
2 years ago
Solved

How to get this pagination code work?

Hi there,

 

The following code always returned duplicated records of the ones on the 1st page. For example, there's 155 pages of data, the data on the 1st page gets duplicated 155 times, while no data from 2nd page onward is there. Can someone please help? Thanks a lot.

 

***

 

 

    // Define page size
    pageSize = 500,
    currentPage = 1,

    // funtion to get 1 page of data
    GetVulnerabilitiesPage = (page) =>
        let
            // API call URL
            url = apiUrl & "?page=" & Text.From(page) & "&per_page=" & Text.From(pageSize),

            // Send API call
            source = Json.Document(Web.Contents(url, [Headers=[#"X-Risk-Token"=apiKey]])),

            // Pull data
            vulnerabilities = source[vulnerabilities]
        in
            vulnerabilities,

    // Get total records
    GetEntityCount = () =>
        let
            //API call URL
            url = apiUrl & "?page=1" & "&per_page=" & Text.From(pageSize),

            // API call
            source = Json.Document(Web.Contents(url, [Headers=[#"X-Risk-Token"=apiKey]])),

            // Record number
            value = source[meta][total_count]
        in
            value,

    // Total page count (-150 below is for quick debug purpose, to get less results.)
    VulnCount = GetEntityCount(),
    totalPages = Number.RoundUp(VulnCount / pageSize) - 150,

    // Get all records
    allVulnerabilities = List.Generate(
        () => [Page = 1, Data = GetVulnerabilitiesPage(1)],
        each [Page] <= totalPages,
        each [
            Page = _[Page] + 1, 
            Data = GetVulnerabilitiesPage([Page])
            ],
        each _[Data]