在graphql中过滤多种类型的内容

时间:2019-02-03 19:55:22

标签: reactjs graphql gatsby

我正在使用GatsbyJS,这是我第一次使用react和graphql进行冒险。我想混合单个页面的内容以同时包含“博客发布”类型的内容和“回购帖子”类型的内容,但是我不知道如何将其添加到查询中以对其进行过滤。

另外;我知道什么是最重要的(re:markdown),但是在这种情况下我不知道什么是templateKey和“ eq”。我对所要查找的内容了解不足,无法知道开始搜索解释所需要的内容。

export const pageQuery = graphql`
  query IndexQuery {
    allMarkdownRemark(
      sort: { order: DESC, fields: [frontmatter___date] },
      filter: { frontmatter: { templateKey: { eq: "blog-post" } }}
    ) {
      edges {
        node {
          excerpt(pruneLength: 400)
          id
          fields {
            slug
          }
          frontmatter {
            title
            templateKey
            date(formatString: "MMMM DD, YYYY")
          }
        }
      }
    }
  }
`

1 个答案:

答案 0 :(得分:2)

eq的意思是等于,templateKey只是降价促销中的另一个关键。您给出的过滤条件实际上是在说“如果templateKey中的frontmatter的值等于博客文章”。

您可以更改过滤器 来自

filter: { frontmatter: { templateKey: { eq: "blog-post" } }}

filter: { frontmatter: { templateKey: { in: ["blog-post", "repo-post"] } }}

您应该签出docs on graphql。它还有一个很棒的工具GraphiQL可以处理查询。