使用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
,查看它们是否检索良好。然后我会尝试添加过滤。