Variables/arguments 没有使用我的 graphql 查询 - 我做错了什么?

Variables/arguments aren't working with my graphql query - What am I doing wrong?

背景:我正在使用 gatsby 建立一个站点,我还想利用 gatsby-helmet 插件向每个页面注入 header 数据。头盔组件将根据正在呈现的页面加载动态数据。我正在 parent object siteMetadata.

中的 gatsby-config.js 文件中设置数据

配置文件如下所示:

module.exports = {
    plugins: [`gatsby-plugin-react-helmet`],
    siteMetadata: {
        pages: [
            {
                id: "home",
                title: "the page title",
                description: "the page description",
            },
        ],
    },
};

我是 graphql 的新手。我正在使用 graphql IDE 来生成查询,但我被困在如何过滤以仅获取具有特定 [=16= 的 pages object ].我已经阅读了关于 variables/arguments 的文档,但我显然遗漏了一些东西,因为我只收到错误。在这一点上,我不知道是我的数据设置不正确,还是我在 graphql 中缺少某些东西,或者两者兼而有之。

无论如何,我真的需要一些帮助。为了不浪费您的时间,如果以下是我的基本查询,我将如何设置它以便使用 variable/argument?

按页面 ID 过滤结果

谢谢!

query MyQuery {
  site {
    siteMetadata {
      pages {
        id
        description
        title
      }
    }
  }
}

site 过滤器将查找与过滤器匹配的任何站点节点。它并不像您尝试的那样过滤节点的子字段。

也就是说,您可以使用 JavaScript:

过滤 GraphQL siteMetadata 结果
const pages = data.site.siteMetadata.pages;

pages.filter(pageItem => /* whatever filter you need */);

更多详情:https://github.com/gatsbyjs/gatsby/issues/13989

您可以在 own using schema customization API 上添加此“功能”。