【问题标题】:Gatsby Source Contentful with Variable in QueryGatsby Source Contentful with variable in Query
【发布时间】:2018-07-14 02:20:48
【问题描述】:

我正在我的 Gatsby 网站上创建一些登录页面,并希望列出来自特定内容类型的节点。例如,我有:

allContentfulSongs
allContentfulBlogs

在我的登陆页面模板中,如何动态查询歌曲或博客?我试过了:

all${landingPage} {
    edges {
      node {
       id
     }
   }
}

但我遇到了语法错误。有没有办法在 Gatsby 中做到这一点,或者我应该只使用

  @include(if: $landingPage) 

对于我的查询中的每个 contentType?

【问题讨论】:

  • 如果您的着陆页具有相同的结构,也许您应该考虑为它们设置一种内容类型,并且每个着陆页都可以由唯一的 slug 标识。
  • @KhaledGarbaya 谢谢。经过审查,我认为我的问题不是很清楚。我确实有一个单独的登陆页面内容类型。当这些页面恰好也是一个帖子类别时,我试图提取一些最新记录。所以我正在提取基本的登陆页面数据,但也试图动态地从另一种内容类型中提取。我认为你是对的,也许我只需要重新考虑我正在使用的结构,而不是走这条路。谢谢!
  • 但是你仍然可以在你的 gatsby-node.js 上有多个查询

标签: graphql contentful gatsby


【解决方案1】:

您不能使用“动态”GraphQL 查询。因此,您不能在 Gatsby 中使用 javascript 变量作为查询名称的一部分。

查询被特殊处理。这就是 Gatsby 静态编译数据的方式。动态生成的查询将更难(或可能不可能)缓存,因此pageQuery 不允许这样做。

【讨论】:

  • 感谢您的解释!我做了一些重组来解决这个问题。
猜你喜欢
  • 2020-03-20
  • 2021-08-27
  • 2021-06-11
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2021-12-16
  • 2019-11-28
  • 2019-09-25
相关资源
最近更新 更多