Запросы GraphQL для Prismi c с более чем 20 записями - PullRequest
0 голосов
/ 30 апреля 2020

Я занимаюсь разработкой сайта с Gatsby и prismi c .io. В файле gatsby-node.js я запускаю код для сглаживания всех изображений обложек. Вот код:

var DitherJS = require("ditherjs/server")
var fs = require("fs")
var find = require("find")

let options = {
  step: 3, // The step for the pixel quantization n = 1,2,3...
  palette: [
    [0, 0, 0],
    [255, 255, 255],
  ], // an array of colors as rgb arrays
  algorithm: "atkinson", // one of ["ordered", "diffusion", "atkinson"]
}

let ditherjs = new DitherJS(options)

exports.onPostBuild = async ({ graphql, reporter }) => {
  const result = await graphql(`
    query allDitherImages {
      prismic {
        allProjects(sortBy: meta_firstPublicationDate_DESC) {
          edges {
            node {
              cover_image
              cover_imageSharp {
                name
              }
            }
          }
        }
      }
    }
  `)

  receivedNames(result.data.prismic.allProjects.edges)

  function receivedNames(data) {
    let imageList = []

    data.map(({ node: project }) => {
      if (project.cover_imageSharp) {
        imageList.push(project.cover_imageSharp.name)
      }
    })

    ditherFiles(imageList)
  }

  function ditherFiles(filenames) {
    filenames.map(filename => {
      let filepaths = find.fileSync(new RegExp(filename), "./public/static/")
      filepaths.map(file => {
        let buffer = fs.readFileSync(file)
        fs.writeFileSync(file, ditherjs.dither(buffer, options))
      })
    })

    reporter.info(`Dithered cover images!`)
  }
}

Это может быть не самый красивый код, но он работает. Но есть одна проблема:

Prismi c ограничивает количество запросов до 20 Результатов (в моем случае 20 имен cover_image). Это означает, что только первые 20 изображений будут отредактированы кодом ...

Ребята, вы не представляете, как я мог "l oop пролистать" все изображения (с помощью функции нумерации страниц ) )?

Я благодарен за любой совет! Michael

...