1

我正在使用 Gatsby 的“gatsby-source-prismic-graphql”插件将我的 Prismic 存储库与一个组件连接起来,并将博客文章数据显示为卡片。该查询在 GraphiQL 中运行良好,但是当我在组件中实现 GraphQL 查询时,Gatsby 在我的查询中无法识别“Prismic”。

我尝试显示其他数据,例如站点元数据,并且没有问题

这是 Git 存储库:https ://github.com/ENEIV/PrometheusIgnis

盖茨比-config.js

// Prismic CMS
    {
      resolve: `gatsby-source-prismic-graphql`,
      options: {
        repositoryName: `prometheus`,
        accessToken: process.env.PRISMIC_KEY,
    },

从 Prismic 查询数据的组件

import React from "react"
import { RichText } from "prismic-reactjs"
import { StaticQuery, graphql } from "gatsby"

const articlesQuery = graphql`
  query {
    prismic {
      allArticless(uid: "prometheus-prismic-testing-1") {
        edges {
          node {
            article_title
          }
        }
      }
    }
  }
`

const Posts = () => (
  // const doc = data.prismic.allArticless.edges.slice(0, 1).pop()
  // if (!doc) return null
  <StaticQuery
    query={articlesQuery}
    render={data => (
      <h1>{RichText.render(data.prismic.edges.node.article_title)}</h1>
    )}
  />
)

export default Posts
4

2 回答 2

1

那是因为您缺少 RichText 渲染中的“allArticless”(allArticles,没有?)对象{RichText.render(data.prismic.allArticles.edges.node.article_title)}

顺便说一句,我认为您在边缘有多个结果数组,不是吗?使用 allArticless 您有多个页面,因此如果上述解决方案不起作用,请尝试映射您的结果

data => { data.prismic.edges.map((article, index) => (
   <h1 key={`articleTitle-${index}}>{RichText.render(article.article_title)}</h1>
)}
于 2019-08-28T13:53:17.467 回答
0

使用“All...”通过 GraphQL 从 CMS 提取数据和使用查询详细信息的单一名称提取数据之间存在很大差异。而在调用多条数据的时候,最好使用一个map方法(map函数)来拉取你需要的所有数据。

例如:

data => { data.prismic.edges.map((article, index) => (<h1 key={`articleTitle-${index}}>{RichText.render(article.article_title)}</h1>)}

正如洛根刚刚解决的那样。

于 2021-05-04T08:01:58.077 回答