Javascript Gatsby.js-allMarkdownRemark中的GraphQL查询pdf文件

Javascript Gatsby.js-allMarkdownRemark中的GraphQL查询pdf文件,javascript,reactjs,graphql,gatsby,Javascript,Reactjs,Graphql,Gatsby,我目前正在为一个学校项目建设一个盖茨比网站,遇到了一些我自己都搞不懂的事情 基本上我有一些降价文件。它们包含一个名为“file”的frontmatter字段,其值为另一个文件的名称(例如:“test.pdf”)。 我需要知道这些文件的公共URL 我试着这样写我的查询: querysitequery{ 出版物:AllMarkdown备注( 筛选器:{fileAbsolutePath:{regex:/publications/“}}, 排序:{order:DESC,字段:[frontmatter\u

我目前正在为一个学校项目建设一个盖茨比网站,遇到了一些我自己都搞不懂的事情

基本上我有一些降价文件。它们包含一个名为“file”的frontmatter字段,其值为另一个文件的名称(例如:“test.pdf”)。 我需要知道这些文件的公共URL

我试着这样写我的查询:

querysitequery{
出版物:AllMarkdown备注(
筛选器:{fileAbsolutePath:{regex:/publications/“}},
排序:{order:DESC,字段:[frontmatter\uuuuuu\u date]},
){
边缘{
节点{
前沿物质{
日期(格式字符串:“MMMM DD,YYYY”),
标题
文件{
公共URL
}
}
}
}
}
}
但它总是将字段“file”解释为字符串,我认为这很奇怪,因为我已经对这样的图像执行了相同的过程:

。。。
节点{
前沿物质{
日期(格式字符串:“MMMM DD,YYYY”),
标题
图画{
childImageSharp{
流质{
…盖茨比磁流体
}
}
}
} 
} 
...
我已经搜索了答案,但我能找到的最有用的结果是在这个网站上:

但我不能让它工作

有人能告诉我我做错了什么吗


当然,我可以使用“allFile”编写第二个查询,然后通过绝对路径将标记文件与pdf文件匹配,但我希望有更好的解决方案。

这是您想要使用
映射的时候,但对于不是标记或JSON文件的任何内容,都没有很好的文档记录

gatsby config.js-映射

//注意:frontmatter`file`和属性`base`必须具有唯一的值
//也就是说,如果映射'base',则不允许任何文件具有相同的名称`
映射:{
'MarkdownRemark.frontmatter.file':'file.base',
}
因此,现在您可以成功地执行以下操作:

query SiteQuery{
    publications: allMarkdownRemark(
        filter: { fileAbsolutePath: {regex : "/publications/"} }
        sort: { order: DESC, fields: [frontmatter___date] }
    ){
       edges {
           node {
               frontmatter {
                   date(formatString: "MMMM DD, YYYY")
                   title
                   file {
                       publicURL                   
                   }
               }
           }
       }
    }
}