所以我想从 Gatsby 的 GraphQL 查询一个不是数组的 JSON 文件,但我真的不知道该怎么做。
据我了解gatsby-transformer-json文档 - 它只支持加载数组并通过allFileNameJson模式访问它们。
我的gatsby-config插件(只有这个问题的必要插件):
{
resolve: 'gatsby-source-filesystem',
options: {
name: 'data',
path: `${__dirname}/src/data`
}
},
'gatsby-transformer-json'
Run Code Online (Sandbox Code Playgroud)
然后让我们说src/data我有一个something.json文件,如下所示:
{
"key": "value"
}
Run Code Online (Sandbox Code Playgroud)
现在我想从something.json文件中查询数据,但没有somethingJson我可以查询的模式(尝试使用 Gatsby 的 GraphiQL)。
有人可以指出我做错了什么或者我该如何解决这个问题?
好的,只要有父对象(文件夹),就可以查询单对象文件。
让我们来看看这些参数:
gatsby-source-filesystem 配置为 src/datatest.json文件定位于src/data/test.json其中的{ "key": "value" }内容现在因为test.json文件实际上有一个父(data文件夹) - 您可以test.json像这样查询字段:
{
dataJson {
key
}
}
Run Code Online (Sandbox Code Playgroud)
但是将它们直接放在根文件夹中是一种不好的做法,因为当您将存储另一个 json 文件(即secondtest.json包含{ "key2": "value2" }内容)并使用与上述相同的查询对其进行查询时,您将仅从单个节点获取数据(不确定是否它需要第一个或最后一个遇到的节点),
因此,对于这种情况,完美的解决方案是将单对象 json 文件存储在单独的文件夹中,每个文件夹只有一个 json。
例如,您有一些“关于我”的数据:
about在您的文件夹中创建一个文件夹src/dataindex.json用 ie创建一个文件{ "name": "John" }像这样:
{
aboutJson {
name
}
}
Run Code Online (Sandbox Code Playgroud)
就是这样。
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |