Gatsby组件中的多个graphql查询

Gatsby组件中的多个graphql查询,graphql,gatsby,prismic.io,Graphql,Gatsby,Prismic.io,我需要在一个组件和gatsby node.js文件中运行多个graphQL查询。(因为Prismic每个答案限制为20个条目…包将为所有Prismic条目(不仅仅是前20个条目)创建页面,因为它会在引擎盖下的所有条目上进行迭代,所以如果您希望为所有这些条目生成页面,我建议您考虑使用它 但是,如果需要获取所有项并在pageContext中传递它们,则需要自己在gatsby节点中进行递归 在gatsby节点中,定义查询后,可以使用类似这样的方法迭代结果并推送到数组 let documents = [

我需要在一个组件和
gatsby node.js
文件中运行多个graphQL查询。(因为Prismic每个答案限制为20个条目…包将为所有Prismic条目(不仅仅是前20个条目)创建页面,因为它会在引擎盖下的所有条目上进行迭代,所以如果您希望为所有这些条目生成页面,我建议您考虑使用它

但是,如果需要获取所有项并在pageContext中传递它们,则需要自己在gatsby节点中进行递归

在gatsby节点中,定义查询后,可以使用类似这样的方法迭代结果并推送到数组

let documents = [];
async function getAllDocumentsRecursively (query, prop, endCursor = '') {
  const results = await graphql(query, { after: endCursor })
  const hasNextPage = results.data.prismic[prop].pageInfo.hasNextPage
  endCursor = results.data.prismic[prop].pageInfo.endCursor

  results.data.prismic[prop].edges.forEach(({node}) => {
    documents.push(node)
  });

  if (hasNextPage) {
    await getAllDocumentsRecursively(query, 'allDitherImages ', endCursor)
  }
}
await getAllDocumentsRecursively(documentsQuery, 'allDitherImages ');
然后在createPage中,将数组传递到上下文中:

createPage({
    path: `/`+ node._meta.uid,
    component: allDitherTempate,
    context: {
      documents: documents
    }
  })
..您可以/应该在gatsby-node.js中获取(累积)所有数据(在循环中)