gatsby-source-prismic-graphql查询结构

时间:2019-10-07 21:40:58

标签: graphql gatsby prismic.io

任何人已经从 gatsby-source-prismic 跳转到 gatsby-source-prismic-graphql ,并且知道查询结构和命名是否相同。

例如,我目前在 gatsby-source-prismic 中使用以下类似内容。

  export const query = graphql`
    query pageQuery($uid: String!) {
      page: prismicPageTemplate(uid: { eq: $uid }) {
        uid
        type
        data {
          title
          body {
            ... on PrismicPageTemplateBodyQuestionSlice {
              slice_type
              primary {
                name
                title {
                  html
                  text
                }
              }
            }
         }
      }
    }
}

我已经阅读了两个插件的文档,也看到其他人提出了类似的问题。 gatsby-source-prismic 的文档已将其作为其命名约定

  

所有文档都从存储库中提取并创建为   棱镜$ {contentTypeName}和allPrismic $ {contentTypeName},其中   $ {contentTypeName}是文档内容类型的API ID。

如果我想切换到gatsby-source-prismic-graphql,还是要使用相同的约定来命名,是否必须重写所有查询?

2 个答案:

答案 0 :(得分:1)

我注意到的唯一区别是,使用 gatsby-source-prismic-graphql 进行的查询在查询开始时添加了一个“ prismic”字段。例如。

{
  prismic {
    allHomepages {
      edges {
        node {
          title
          description
        }
      }
    }
  }
} 

对于 gatsby-source-prismic ,该字段不可用。这只是第一种方法,进行简单查询。我不知道是否更复杂,更深入文档(用于调用“切片”或“链接”字段)查询的查询彼此相似甚至更大。所以这是我的第一个猜测。

答案 1 :(得分:0)

这是查询的更复杂版本。我添加了查询名称和两个切片:

query MyHomeQuery {
  prismic {
    allHomepages {
      edges {
        node {
         title
         description
          body {
            ... on PRISMIC_HomeBodyText {
              type
              label
            }
            ... on PRISMIC_HomeBodyImage_with_caption {
              type
              label
            }
          }
        }
      }
    }
  }
}

您是正确的。 gatsby-source-prismic 中的名称将为 allPrismicHomePage