You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:12:03