Передача переменной в регулярное выражение в запросе 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] } } }