首页 > 解决方案 > 以正则表达式为变量的 Gatsby graphql

问题描述

我想将正则表达式与 graphql 查询变量一起使用。

这不会返回结果:

export const query = graphql`
  query(
    $episodes: String!
    ) {
    episodes: allMarkdownRemark(
      filter: { fields: { slug: { regex: $episodes } } }
    ) {
      edges {
        node {
          id
        }
      }
    }
  }
`;

但是,这会起作用:

export const query = graphql`
  query() {
    episodes: allMarkdownRemark(
      filter: { fields: { slug: { regex: "/episodes/travel/" } } }
    ) {
      edges {
        node {
          id
        }
      }
    }
  }
`;

怎么了?

标签: graphqlgatsby

解决方案


通过查询参数传递正则表达式应该可以工作,请参见下面的屏幕截图。确保您将正则表达式作为字符串传递,而不是实际的正则表达式。此外,您需要转义中间斜线:

    context: {
-     episodes: /episodes\/traveller/             <-- doesn't work
+     episodes: /episodes\/traveller/.toString()  <-- works
or    episodes: "/episodes\\/traveller/"          <-- also works
    }

在此页面中嵌入的其中一个 graphiQL 中尝试一下 在此处输入图像描述


推荐阅读