并非所有 graphql 查询数据都在 GatsbyJS 页面上呈现
Not all graphql query data being rendered on GatsbyJS page
我正在使用 Gatsby 和 Strapi 无外设 CMS 构建一个博客网站,我正在使用 GraphQL 查询要在索引页面上显示的文章。
每篇文章都与 Strapi 中的一个类别类型相关。
文章和类别在 Strapi 中都是独立的内容类型,并通过关系字段链接。
我可以在 GraphiQL 中查询所有需要的数据,并且所有数据都没有错误地返回。
但是,在 Gatsby 中实现查询时,除了 "category/name" 字段之外的所有字段都将被返回。
以下是当前在索引页中使用的代码。
const IndexPage = ({ data }) => (
<Layout>
<ul>
{data.allStrapiArticle.edges.map(document => (
<li key={document.node.id}>
<Link to={`/${document.node.id}`}>
<Img fixed={document.node.image.childImageSharp.fixed}/>
<p>
{document.node.categories.name}
</p>
<h2>
{document.node.title}
</h2>
<p>by {document.node.author.username}
</p>
<p>
{document.node.content}
</p>
</Link>
</li>
))}
</ul>
</Layout>
)
export default IndexPage
export const pageQuery = graphql`
query IndexQuery {
allStrapiArticle {
edges {
node {
id
image {
childImageSharp {
fixed(width: 200, height: 125) {
...GatsbyImageSharpFixed
}
}
}
author {
username
}
title
content
categories {
name
}
}
}
}
}
`
This is the GraphQL result from the query
编辑---为了清楚起见,我在 GraphQL 中添加了查询结果的屏幕截图。
在浏览器中呈现页面后,控制台中未显示任何错误,HTML 元素已呈现但仍为空。
有人可以看看我在 Gatsby 中的索引页代码,并告诉我这个特定数据文件丢失的位置吗?
数据并没有丢失,您只是没有正确访问它们。仅使用 document 访问数据,不要使用 document.node
{data.allStrapiArticle.edges.map(document => (
<li key={document.id}>
<Link to={`/${document.id}`}>
<Img fixed={document.image.childImageSharp.fixed}/>
<p>
{document.categories.name}
</p>
<h2>
{document.title}
</h2>
<p>by {document.author.username}
</p>
<p>
{document.content}
</p>
</Link>
</li>
))}
我正在使用 Gatsby 和 Strapi 无外设 CMS 构建一个博客网站,我正在使用 GraphQL 查询要在索引页面上显示的文章。
每篇文章都与 Strapi 中的一个类别类型相关。 文章和类别在 Strapi 中都是独立的内容类型,并通过关系字段链接。
我可以在 GraphiQL 中查询所有需要的数据,并且所有数据都没有错误地返回。
但是,在 Gatsby 中实现查询时,除了 "category/name" 字段之外的所有字段都将被返回。 以下是当前在索引页中使用的代码。
const IndexPage = ({ data }) => (
<Layout>
<ul>
{data.allStrapiArticle.edges.map(document => (
<li key={document.node.id}>
<Link to={`/${document.node.id}`}>
<Img fixed={document.node.image.childImageSharp.fixed}/>
<p>
{document.node.categories.name}
</p>
<h2>
{document.node.title}
</h2>
<p>by {document.node.author.username}
</p>
<p>
{document.node.content}
</p>
</Link>
</li>
))}
</ul>
</Layout>
)
export default IndexPage
export const pageQuery = graphql`
query IndexQuery {
allStrapiArticle {
edges {
node {
id
image {
childImageSharp {
fixed(width: 200, height: 125) {
...GatsbyImageSharpFixed
}
}
}
author {
username
}
title
content
categories {
name
}
}
}
}
}
`
This is the GraphQL result from the query 编辑---为了清楚起见,我在 GraphQL 中添加了查询结果的屏幕截图。
在浏览器中呈现页面后,控制台中未显示任何错误,HTML 元素已呈现但仍为空。
有人可以看看我在 Gatsby 中的索引页代码,并告诉我这个特定数据文件丢失的位置吗?
数据并没有丢失,您只是没有正确访问它们。仅使用 document 访问数据,不要使用 document.node
{data.allStrapiArticle.edges.map(document => (
<li key={document.id}>
<Link to={`/${document.id}`}>
<Img fixed={document.image.childImageSharp.fixed}/>
<p>
{document.categories.name}
</p>
<h2>
{document.title}
</h2>
<p>by {document.author.username}
</p>
<p>
{document.content}
</p>
</Link>
</li>
))}