使用GN Graphql和gatsby源文件系统查询文件夹 编辑
我想我不清楚我的问题 问题在于,使用GN Graphql和gatsby源文件系统查询文件夹 编辑,graphql,filesystems,gatsby,Graphql,Filesystems,Gatsby,我想我不清楚我的问题 问题在于,sourceInstanceName返回问题中显示的空数组,即使文件夹包含内容和.md文件 大家好,我用graphql查询文件夹时遇到问题 你看,我有这样的文件结构: /content/posts/journies/{FILENAME}.{EXTENSION} /content/posts/Blog/{FILENAME}.{EXTENSION} 我想查询文件夹名称(又名旅行或博客),而不是内容 我可以使用以下命令进行查询: query test2 { jou
sourceInstanceName
返回问题中显示的空数组,即使文件夹包含内容和.md文件
大家好,我用graphql查询文件夹时遇到问题
你看,我有这样的文件结构:
/content/posts/journies/{FILENAME}.{EXTENSION}
/content/posts/Blog/{FILENAME}.{EXTENSION}
我想查询文件夹名称(又名旅行或博客),而不是内容
我可以使用以下命令进行查询:
query test2 {
journeys: allFile(filter: {sourceInstanceName: {eq: "posts"}}) {
edges {
node {
dir
name
relativePath
relativeDirectory
}
}
}
}
它返回这个,返回不必要的文件,因为我只需要文件夹名或目录:
{
"data": {
"journeys": {
"edges": [
{
"node": {
"dir": "D:/Side-projects/salomonpina.dev/content",
"name": ".git",
"relativePath": ".git",
"relativeDirectory": ""
}
},
{
"node": {
"dir": "D:/Side-projects/salomonpina.dev/content/icons/png",
"name": "github-icon_512",
"relativePath": "icons/png/github-icon_512.png",
"relativeDirectory": "icons/png"
}
},
more info down...
它也适用于资产
但是当我将(filter:{sourceInstanceName:{eq:“posts”}}})更改为(filter:{sourceInstanceName:{eq:“journes”}})
它返回一个空数组:
{
"data": {
"journeys": {
"edges": []
}
}
}
尽管它使用了正确的名称,但它来自gatsby源文件系统
下面是我在gatsby config.js
和gatsby源文件系统中所做的工作
{
解析:“盖茨比源文件系统”,
选项:{
名称:“职位”,
路径:`${uuuu dirname}/content/`,
},
},
{
解析:“盖茨比源文件系统”,
选项:{
名称:“资产”,
路径:`${uuuu dirname}/static/`,
},
},
{
解析:“盖茨比源文件系统”,
选项:{
名称:“旅行”,
路径:`${uu dirname}/content/posts/journies/`,
},
},
我试过了,但似乎帮不了我
任何帮助都将不胜感激。缺少有关文件数据类型(扩展名)的信息,这些信息将影响您收集帖子信息的方式。一旦获得直接访问内容本身的sourceInstanceName
权限,您需要做什么。假设您有一个降价结构,这将是childMarkdownRemark
,因此应该可以:
{
allFile(filter: {sourceInstanceName: {eq: "journeys"}}) {
edges {
node {
sourceInstanceName
childMarkdownRemark {
frontmatter {
slug
}
}
}
}
}
}
注意:自childMarkdownRemark
对象以来的嵌套结构可能与我的不同。检查localhost:8000/\uuuuuuu图形ql
playway以查看哪个是您的查询对象
此外,我认为您的博客文件夹的gatsby node.js
中缺少一个文件系统:
{
resolve: "gatsby-source-filesystem",
options: {
name: "blog",
path: `${__dirname}/content/posts/Blog/`,
},
},
如果没有从查询中检索到任何值,请删除过滤器
,以检查每个帖子
的源InstanceName
(以检查它们是否正确设置或过滤器是否因键入错误而无法工作)。在localhost:8000/\uuuuuuuu图形ql
playerd中检查它们
我不知道您的要求或规格,但是,也许在您的post
GraphQL模式中添加另一个字段也适合您,比如说category
(travel
或blog
)对您来说是有效的,并且更具可扩展性。您是说每个post
的文件夹吗?是的,每个帖子的文件夹名称谢谢你的提醒!博客文件夹和文件系统已经添加,但我想我还不清楚我的问题。问题是,sourceInstanceName
返回问题中显示的空数组,即使文件夹中有内容和.md文件。在这种情况下,我建议删除筛选器,并尝试查询所有sourceInstanceName
,查看它们是否检索良好。然后我会尝试添加过滤。