【发布时间】:2020-11-20 23:40:29
【问题描述】:
我正在 Gatsby / React 中构建一个具有 2 种内容类型的网站:Pages 和 posts,并通过 GraphQL(在 Prismic 中)查询我的数据。
我想在页面上包含一个“近期新闻”模块,显示最新的博文。
我的问题如下:
有没有办法直接在我的模块中访问数据,无需 通过每个父 React 组件传递数据?
在这种情况下,我使用的是 Prismic,但我猜同样的情况可能适用于 Contentful、Sanity 或任何其他无头 CMS。
这就是我查询数据的方式:
query pageQuery($uid: String, $lang: String) {
prismic {
allPages(uid: $uid, lang: $lang) {
edges {
node {
title
heading
body {
... on PRISMIC_PageBodyNews {
type
primary {
news_heading
}
}
}
}
}
}
allRecentPosts: allPosts(first: 2) {
edges {
node {
publish_date
title
_meta {
uid
lang
}
}
}
}
}
}
我一直在寻找实现的方法:
query pageQuery($uid: String, $lang: String) {
prismic {
allPages(uid: $uid, lang: $lang) {
edges {
node {
title
heading
body {
... on PRISMIC_PageBodyNews {
type
primary {
news_heading
}
allRecentPosts: allPosts(first: 2) {
edges {
node {
publish_date
title
_meta {
uid
lang
}
}
}
}
}
}
}
}
}
}
}
现在我收到以下错误:
error Cannot query field "allPosts" on type "PRISMIC_PageBodyNews" graphql/template-string 这是有道理的,因为当前架构中不允许使用 allPosts。
但是,在我尝试更改架构之前,我想知道是否有可能以允许 GraphQL / Prismic 中的“子查询”的方式定义我的架构?
【问题讨论】:
标签: reactjs graphql headless prismic.io