gpt4 book ai didi

json - Gatsby:在页面上组合两个 graphql 源(.json 和 .jpg 源)

转载 作者:行者123 更新时间:2023-12-02 02:44:44 28 4
gpt4 key购买 nike

语境

我正在将一个旧的 php 电子商务网站变成一个用 gatsby.js 构建的静态网站。

我将所有产品元数据放入单独的 .json 文件(每个产品一个),并且我能够使用 json 和文件转换器插件加载它们。他们在 /items .然而,每个项目都与一组标准图像相关...例如 item-01-main.jpg , item-01-placement.jpg等等...我把所有的图片放在/itemphotos并按照此处的说明将它们加载到 graphql 中:https://www.gatsbyjs.org/packages/gatsby-image/



在加载所有产品的页面上,我不知道如何合并每个产品的item-xx-main.jpg图片:我不知道什么 graphql 查询会获取两组数据并匹配/合并它们。 :

/items
item-01.json
item-02.json
/itemphotos
item-01-main.jpg
item-01-placement.jpg
item-02-main.jpg
item-02-placement.jpg

我感觉我的目录结构是错误的方法,也许我应该将所有相关图像与我的产品 json 一起存储在一个文件夹中:
/items
item-01/
item-01.json
item-01-main.jpg
item-01-placement.jpg
item-02/
item-02.json
item-02-main.jpg
item-02-placement.jpg

但随后 我如何获取 items/目录由 item-xx/ 组成graphql 中包含图像和 json 的子文件夹,代表单个实体?

我没有使用 Markdown 文件,因为我想要最大的 UI 灵活性。

最佳答案

结构二

您可以在 .json 中引用您的图片吗? ?如果是这样,第二个结构可能是赢家,因为您不必做太多额外的工作:

// item-01.json

{
"meta": "...",
"main": "./item-01-main.jpg",
"placement": "./item-01-placement.jpg"
}

询问:
{
json {
id
main {
childImageSharp {
fixed {
src
}
}
}
}
}

结构 1

如果这是不可能的或者如果您想保留第一个结构,您可以尝试以下查询:
{
item: allFile(filter: { relativePath: { regex: "/item-01/" } }) {
nodes {
name
extension
children {
... on ImageSharp {
fixed {
src
}
}
... on Item01Json {
id
}
}
}
}
}

这将产生一个包含共享相同项目 ID 的所有文件的数组,无论它们存储在哪里。然后您可以使用 extension字段查找 json & jpg节点。它并不漂亮,但也不需要那么多额外的工作。

以上都不是

如果这些都不适合您,您可以使用 createTypes and createResolvers 探索将图像字段添加到 json 的 graphql 模式中。 .通过 createTypes 为 json 添加类型定义,然后使用 createResolvers找到 imageSharp节点并解决它。

关于json - Gatsby:在页面上组合两个 graphql 源(.json 和 .jpg 源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com