以正则表达式为变量的 Gatsby graphql

Dej*_*ell 1 graphql gatsby

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

这不会返回结果:

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

但是,这会起作用:

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

怎么了?

Der*_*yen 5

Passing regex via query arguments should work, see the screenshot below. Make sure you're passing in the regex as string, not the actual regex. Also, you'll need to escape the middle slash:

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

Try it out in one of the graphiQL embed in this page 在此处输入图片说明