按映射字段过滤GraphQL查询不会返回任何结果

时间:2019-05-22 20:02:04

标签: graphql gatsby

让我们看看。我有一个盖茨比网站,一个歌词网站。每首歌曲都是Markdown文件,其中包含一些前题字段(标题,专辑,作者等)。我对每个作者的页面都有一个GraphQL查询,它会过滤所有歌曲并返回与我传入的作者姓名匹配的歌曲。

我想显示有关每个作者的更多信息,所以我添加了一个authors.json文件,每个文件都有名称,传记和图像,并向我的gatsby配置文件添加了映射,将frontmatter作者映射到作者名称(来自我的json文件)。到目前为止一切顺利。

它在大多数页面上都有效,我只需要将查询从frontmatter {author}更新为frontmatter {author {name}}。

但是作者页面查询不起作用。我在GraphiQL中遇到了麻烦,删除过滤器会使它正确返回所有映射的字段,但是,当然,我需要过滤器。

我还尝试对作者值进行硬编码,因为它通常是由页面上下文提供的,但是它也不起作用。

不知道我要去哪里错了:/

我将添加一些相关的片段:

前题示例:

---
title: Adeus camarada, adeus
author: Contra Mestre Rafael
album: Quando os berimbaus se encontram
tags: ["quadra"]
date: 2019-02-02
---

作者条目(authors json是其中的一个数组):

{
    "name": "Contra Mestre Rafael",
    "bio": "Placeholder bio.",
    "image": "/images/authors/cm-rafael.jpg"
}

查询无效:

    query($author: String) {
        allMarkdownRemark(
            limit: 2000
            sort: { fields: [frontmatter___date], order: DESC }
            filter: { frontmatter: { author: { eq: $author } } }
        ) {
            totalCount
            edges {
                node {
                    fields {
                        slug
                    }
                    frontmatter {
                        author {
                            name
                            bio
                            image
                        }
                        title
                    }
                }
            }
        }
    }

目前al​​lMarkdownRemark返回null,我希望它为与作者匹配的每首歌返回一个节点数组,以及每首歌曲中作者的映射信息。

1 个答案:

答案 0 :(得分:0)

此刻,盖茨比目前似乎并不支持。一位朋友给我发了这个邮件:

https://github.com/gatsbyjs/gatsby/issues/4614

如果可以的话,我会尽力为Gatsby做出修复:)