我正在尝试使用 gatsby-transformer-json 导入包含产品类别的JSON文件,其中包含多个产品,这些产品的字段根据其所在的类别具有动态子字段。其中有数百个不同的类别,因此我想使这些子字段(如“属性”)保持动态。它们也可能随时间变化。客户端逻辑将处理此问题。
不幸的是,GraphQL只让我明确查询字段,而查询需要知道所有子字段。
这是JSON:
{
"name": "Car Hifi",
"categorydesc": "This should be a very long text",
"products": [{
"name": "JVC KW-DB93BT",
"attributes": {
"Has USB": "JVC",
"compatible formats": {},
"Hands free": "true"
},
"advantages": {
"0": "More bass",
"1": "Less power consumption",
"2": "Simple UI"
}
}
]
}
这是一个查询:
query MyQuery {
dataJson {
name
categorydesc
products {
name
attributes {
// This should be dynamic
}
}
}
}
答案 0 :(得分:0)
我能想到的一种解决方案是修改attributes
使其变为数组:
// from this
{
"attributes": {
"Has USB": "JVC",
"compatible formats": {},
"Hands free": "true"
}
}
// to this
{
"attributes": [
{"label": "Has USB", "value": "JVC" },
{"label": "compatible formats", "value": {} },
{"label": "Hands free", "value": true },
]
}
然后您可以查询它:
query {
dataJson {
products {
name
attributes {
label
value
}
}
}
}
不幸的是,gatsby-transformer-json
并不那么灵活,我想如果您想走这条路,最好编写自己的源插件(听起来并不那么困难),以转换{{1} }字段,然后再将数据提供给盖茨比的attributes
。
文档中的一些相关链接: