如何使用 'all' 集合以与 Gatsby.js 中的文件系统路由 API 一起使用?



我希望与Gatsby.js的文件系统路由API一起工作,从私有GraphQL API中的集合生成页面。似乎文件系统路由API总是使用'all'收集请求来生成这些(allFile,allSite,allPost等)。

因为我的数据来自一个单独的API,在Gatsby的模式中没有等效的'all'集合,并且我的数据也被gatsby-source-graphql插件命名在一个字段内。

是否可以定义我自己的'all'集合供Gatsby使用?我想别名allFacilitiesmy-remote-api { facilities },但我不确定这是否可能。

如果没有,还有其他方法吗?

File System Route API是Gatsby (^2.26.0)开发的动态创建页面的新品牌,去掉了gatsby-node.js的GraphQL查询,使用了/pages文件夹中的语法符号({}[]()等)。

在您的用例之后,您需要通过添加"all"前缀来推断和修改模式。关键字(可能使用createNodeFactorycreateNodeHelpersgatsby-node-helpers package,不知道确切的数据模式和结构,很难猜测一个示例代码),但思路是:

const nodeHelpers = createNodeHelpers({
typePrefix: 'Shopify',
createNodeId,
createContentDigest,
})
}

默认情况下,这将作为"all"关键字,创建allShopify节点,可被文件系统路由API查询和使用。

另一方面,有"old"方法:使用GraphQL在您的gatsby-node.js,使用createPageAPI动态创建页面,使用上下文传递数据(通常是唯一标识符),并且,在模板中,使用另一个查询过滤该唯一值来获取您的数据(即:在gatsby-node.js文件中,您查询所有帖子并动态创建页面(使用createPageAPI)为每个帖子,使用分段值。然后,使用上下文传递一个标识符(符号或标题),并在模板中(不是/pages作为文件系统路由API)创建一个通过该唯一值过滤的查询来获取您的帖子数据。

如果您不能使用helper自定义节点,那么第二种方法可能适合您的需求。这是盖茨比文档提供的关于这部分的指南。

相关内容

  • 没有找到相关文章

最新更新