【发布时间】:2018-04-06 14:12:42
【问题描述】:
我有以下查询,它接收变量$tag。目前我正在根据其frontmatter.keywords 的值过滤结果。 keywords 是一个逗号分隔的字符串,所以我需要使用正则表达式来检查其中是否包含 $tag,但是我不知道如何将变量传递到正则表达式中。如果我将一个值硬编码到正则表达式中(如下面的代码中我硬编码了/example/,过滤工作。如果我用$tag 替换example,我会收到一个错误:
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 中,但似乎没有任何基于数组值的过滤方式。
【问题讨论】:
标签: javascript regex graphql gatsby