【问题标题】:gatsby graphql Cannot query field "allTribeEvents" on type "Query"gatsby graphql 无法在“Query”类型上查询字段“allTribeEvents”
【发布时间】:2021-11-13 04:15:48
【问题描述】:

我正在使用 gatsby 和 wordpress 来显示来自 wordpress 的事件日历 API 的事件。我正在使用插件gatsby-source-tribe-events 访问allTribeEvents graphql 字段。问题是,如果我没有在 wordpress 上发布任何事件,则不会创建字段 allTribeEvents,然后如果我在 gatsby 上运行我的 graphql 查询,我会得到

Cannot query field "allTribeEvents" on type "Query"

所以我的问题是如何检查graphql中是否存在该字段并根据它有条件地查询。

我的代码:

React 组件显示事件:

export default function Events() {
 
const data  = useStaticQuery(graphql`
   query EventsQuery {
    allTribeEvents {
      ...
     }
    }`);

//then I return my component based on the data 
}

所以关键是如果不存在帖子"allTribeEvents" 不会在 grapqhl 中创建,我会收到错误

【问题讨论】:

    标签: javascript reactjs wordpress graphql gatsby


    【解决方案1】:

    所以我的问题是如何检查graphql中是否存在该字段并查询 有条件地基于它。

    简短的回答,你不能。本质上是因为当您查询某些内容时,您期望得到一些结果。这里的问题是,由于定义了 worfklow(WordPress -> Gatsby -> GraphQL 节点创建),步骤被破坏了。

    在这种情况下,理想的解决方案是定义一个Custom GraphQL Schema Definition,它可以帮助您告诉盖茨比allTribeEvents 可以是null

    另一种可能的解决方法(不太干净)是创建一个空的部落事件(可能有空格或某种定义的字段)并在前端处理它以避免打印它(假设你有一个事件命名为“-”,如果您在 GraphQL 查询中找到该字段,请过滤它)。

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 2020-06-27
      • 2020-10-27
      • 2016-12-05
      • 2019-10-09
      • 2021-06-20
      • 2021-12-09
      • 2021-04-10
      • 2021-09-02
      相关资源
      最近更新 更多