Передача переменной в регулярное выражение в запросе Gatsby graphql

у меня есть следующий запрос, который получает переменную $tag. В настоящее время я фильтрую результаты на основе значения его frontmatter.keywords. keywords - это строка, разделенная запятыми, поэтому мне нужно использовать регулярное выражение для проверки включения $tag в нем, однако я не могу понять, как передать переменную в регулярное выражение. Если я жестко задать значение в регулярное выражение (как в коде ниже, где у меня зашит /example/ фильтрация работает. Если я заменю example С $tag Я получаю Ошибка:

GraphQLError: переменная " $tag "никогда не используется в операции"TagQuery".

export const pageQuery = graphql`
  query TagQuery($tag: String) {
    allMarkdownRemark(
      limit: 100
      sort: { fields: [frontmatter___date], order: DESC }
      filter: { frontmatter: { keywords: { regex: "/example/" } } }
    ) {
      totalCount
      edges {
        node {
          fields {
            slug
          }
          excerpt
          frontmatter {
            title
            keywords
            date
          }
        }
      }
    }
  }
`;

как я должен использовать $tag в регулярном выражении?

Я бы предпочел использовать другой подход и добавить теги в виде массива в gatsby-node.js, но, похоже, нет никакого способа фильтрации на основе значения массива.

1 ответов


Я закончил тем, что разделил теги на массив, а затем использовал следующее для фильтрации:

filter: { fields: { tags: { in: [$tag] } } }