Graphql 使用CraftQL和Gatsby JS查询Craft CMS中的全局字段

Graphql 使用CraftQL和Gatsby JS查询Craft CMS中的全局字段,graphql,gatsby,craftcms,Graphql,Gatsby,Craftcms,我在CraftQL插件的无头模式下使用Craft。我的前端是使用盖茨比JS构建的 我可以查询条目并将数据输出到模板,但是全局字段不可用。这是我的密码: // gatsby-config.js plugins: [ { resolve: `gatsby-source-craftcms`, options: { endpoint: `http://cms.local/api`, token: `REDACTED`,

我在CraftQL插件的无头模式下使用Craft。我的前端是使用盖茨比JS构建的

我可以查询条目并将数据输出到模板,但是全局字段不可用。这是我的密码:

// gatsby-config.js
plugins: [
  {
        resolve: `gatsby-source-craftcms`,
        options: {
            endpoint: `http://cms.local/api`,
            token: `REDACTED`,
            query: `{
                globals: globals {
                    contact {
                        address
                    }
                },
                home: entries(section:[home]) {
                    id
                    title
                    ... on Home {
                        subHeading
                        intro
                        ctaButton {
                            ... on CtaButtonButton {
                                __typename
                                text
                                linkUrl
                            }
                        }
                    }
                },
// etc
然后在我的模板中:

export const query = graphql`
  query {
    home {
        title
        subHeading
        intro
        ctaButton {
            text
            linkUrl
        }
    }
    globals {
        contact {
            address
        }
    }
  }
`
在我的控制台中,我得到:

error  Cannot query field "global" on type "Query"
如果我从查询中删除
全局
,我可以成功构建并输出
data.home.title

我已经尝试在CMS中使用CraftQL浏览器,我可以成功地查询全局:

我相信我遗漏了一些东西,但在或的文档中找不到任何东西


有人知道我做错了什么吗?

所以昨天和CraftQL的制造商谈过之后,我的错误是假设我需要使用
gatsby source craftcms
作为我的源插件。事实上,该标准更好、更抽象,这意味着您不需要在
gatsby config
中构造巨大的graphQL查询。此外,它的文档解释得更好

现在我的
gatsby config.js
如下所示:

plugins: [
    {
        resolve: `gatsby-source-graphql`,
        options: {
    typeName: "Craft",
    fieldName: "craft",
    // Url to query from
    url: "http://cms.local/api",
    // HTTP headers
    headers: {
      Authorization: `bearer ACCESSTOKENHERE`,
    }
        },
    },
我的问题是这样的

{
  craft {
    globals {
      contact {
        address
      }
    }
  }
}
这是更理智和更接近正常的树枝API

您可以查看