如何在Gatsby的Contentful富文本中实现references字段可选查询
问题背景
我需要搭建一个博客页面,可在图片资产存在时按需展示对应资源。
问题描述
首先我在Contentful中创建了内容模型,其中包含名为"Body"的富文本字段,随后我创建了一条仅包含随机文本的内容条目。在Gatsby中通过GraphQL探索器查询数据时,我可以查询到body下的raw字段,但只有当我在富文本中添加至少一张图片资产(即"虚拟内容")时,才能查询到references字段。
关联GraphQL查询语句
export const query = graphql` query ($slug: String!) { contentfulBlog(slug: { eq: $slug }, node_locale: { eq: "en-US" }) { title body { raw references { ... on ContentfulAsset { contentful_id __typename gatsbyImageData(formats: AUTO, layout: FULL_WIDTH) } } } } } `
问题说明
上述查询的问题在于:如果某篇文章中没有图片资产,查询就会报错。我的目标是当有可用资产时能查询到references字段,无资产时查询也能正常运行,请问该如何实现?
2021年8月24日更新
给同样遇到这个问题的开发者参考:查阅大量文档和相关回答后我发现,这其实是gatsby-source-contentful插件的已知限制。v4版本的插件官方文档明确说明:
目前,没有至少一个填充实例的字段不会在GraphQL schema中被创建。
目前尚不清楚后续版本是否会修复该问题,当前的解决方法是:至少在一条内容的富文本中添加虚拟内容(嵌入式图片、链接等),让插件在GraphQL schema中生成references字段。
内容的提问来源于stack exchange,提问作者York Wang
相关产品推荐
相关产品推荐

