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中获取(累积)所有数据(在循环中)