首页 > 解决方案 > 如何使用从 Gatsby 中的 Contentful 获取的值过滤从 Contentful 获取的数据?

问题描述

我正在尝试使用过滤器从 Contentful 中获取数据,该过滤器的eq运算符也从 Contentful 中获取。在我当前的场景中,如下面的代码所示,我正在尝试使用从in 中allContentfulPost获取的值过滤从中获取的内容。labelcontentfulCategory

有什么想法我可以这样做吗?我尝试$labelallContentfulPost过滤器eq运算符中使用,但这没有用。

export const pageQuery = graphql`

  query CategoryBySlug($slug: String!) {

    contentfulCategory (slug: { eq: $slug }) {
      slug
      label
    }

    allContentfulPost (filter: { categories: { elemMatch: { label: { eq: ????? } } } }) {
      edges {
        node {
          title
          slug
          featured
          image {
            fluid {
              src
            }
          }
        }
      }
    }
  }
`

标签: graphqlgatsbycontentful

解决方案


内容丰富的 DevRel 在这里。

您可以尝试以下查询吗?:)

export const pageQuery = graphql`
  query CategoryBySlug($slug: String!) {
    contentfulCategory (slug: { eq: $slug }) {
      slug
      label
    }

    allContentfulPost (filter: { 
      categories: { 
        elemMatch: { 
          slug: { 
            #  reuse the $slug argument to filter the related articles 
            eq: $slug
          }
        }
      }
    }) {
      edges {
        node {
          title
          slug
          featured
          image {
            fluid {
              src
            }
          }
        }
      }
    }
  }
`

您也可以过滤$slugin allContentfulPost。使用上面的查询,您请求两种不同的资源:

  1. $slug与as匹配的一类contentfulCategory

  2. 链接到与正确匹配的类别的$slug帖子allContentfulPost


推荐阅读