【问题标题】:GraphQL filter Contentful postsGraphQL 过滤内容丰富的帖子
【发布时间】:2021-07-15 06:35:55
【问题描述】:

我正在尝试获取类似category->post1, post2 的帖子,但某些类别没有帖子。所以我想跳过/过滤这些类别。我该怎么做?

查询示例:

query MyQuery {
  allContentfulCategory(limit: 10, filter: {}) {
    edges {
      node {
        slug
        name
        blog_post {
          slug
        }
      }
    }
  }
}

Screenshot

谢谢

【问题讨论】:

    标签: arrays graphql gatsby contentful


    【解决方案1】:

    如果您的 GraphQL 节点设置正确,您可以:

    query MyQuery {
      allContentfulCategory(limit: 10, filter: {blog_post: {slug: {ne: null}}}) {
        edges {
          node {
            slug
            name
            blog_post {
              slug
            }
          }
        }
      }
    }
    

    ne(不等于)过滤器应该可以解决问题。

    或者,您可以直接使用 JavaScript 代码进行过滤,因为它是一个 null 值,它可以很容易地从 node 数组中删除:

    let filtered = data.allContentfulCategory.edges.node.filter(el => el.blog_post != null);
    

    【讨论】:

    • 非常感谢您的回答,请看这个截图:i.imgur.com/eNBKeVL.png(我试过 {blog_post: {ne: null}},它说 blog_post 没有 @ 987654329@...)
    • 在这种情况下,过滤空 slug,例如 allContentfulCategory(limit: 10, filter: {blog_post: {slug: {ne: null}}}) {
    • 还是不行,blog_post只有一个属性是elemMatch,截图:i.imgur.com/0F8rnzw.png
    • 怎么样直接allContentfulCategory(limit: 10, filter: {slug: {ne: null}}) {你可以访问slug根据i.imgur.com/eNBKeVL.png
    • 另一种解决方法是在请求和获取完成后直接在 JS 代码中进行过滤
    猜你喜欢
    • 2021-07-17
    • 2020-04-20
    • 2021-12-23
    • 2021-11-11
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    相关资源
    最近更新 更多