Фильтрация нескольких типов контента в graphql - PullRequest
0 голосов
/ 03 февраля 2019

Я использую GatsbyJS, и это мое первое приключение с реагированием и графиком.Я хочу смешать содержимое одной страницы, чтобы оно содержало как содержимое типа "блог-пост", так и содержимое типа "репо-пост", но я не знаю, как добавить это в запрос, чтобы отфильтровать его.

Дополнительно;Я знаю, что такое frontmatter (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 голосов
/ 03 февраля 2019

eq здесь означает «равно», а templateKey - это просто еще один ключ в вашей передней уценке.Вы указали, что фильтр по сути говорит "если значение templateKey в frontmatter равно записи в блоге".

Вы можете изменить фильтр с

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

на

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

Вы должны проверить документы на graphql .Он также имеет отличный инструмент под названием GraphiQL для работы с запросами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...