在Gatsby的GraphQL查询中,file和allFile有什么区别?

3
在我的GraphiQL浏览器中,我可以查询fileallFile,但我不太理解两者之间的区别。实际上,每个查询似乎都以这种方式“重复”。有人能解释一下,或者指向一些说明区别以及何时应该使用其中一个的文档吗? GraphQL query
1个回答

3

allFile(注意前缀all)表示 Gatsby 使用gatsby-source-filesystem推断出的所有 file 节点类型的 GraphQL 资源,而 file 则是需要过滤以获取特定对象的隔离节点。

换句话说,allFile 暴露了项目中的所有文件(至少是 Gatsby 知道的那些文件),这将给您提供一个包含节点的数组,而 file 仅指向特定的 GraphQL 节点。通常需要过滤这个单独的和孤立的节点才能从其余节点中获取它们。 同样的逻辑也适用于 allMdxmdxallSitesite 等。

例如,使用 allMdx 示例(由gatsby-plugin-mdx创建的节点):假设您有一个博客项目,在其中将帖子存储在 MDX 文件中。在您的 gatsby-node.js 中,您将查询 allMdx 节点以获取所有帖子,然后遍历结果并为每个帖子创建动态页面(使用 createPage 方法)。在帖子模板中(每个特定帖子将使用的模板),您将需要使用 mdx 而不是查询 allMdx,因为它具体指向单个 mdx 节点。 当然,在您的模板中,仍然可以使用 allMdx,但它不是最佳的 GraphQL 节点,因为您有一个具体的 mdx,将是您的单个帖子,并通过一些唯一值(如slugid等)进行过滤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接