是否可以在GraphQL中使用动态查询别名?

是否可以在GraphQL中使用动态查询别名?,graphql,gatsby,Graphql,Gatsby,我目前在盖茨比的一个文档网站上工作。一个特定页面检索HTML/CSS组件的各种自述文件的内容,这些组件根据其本地文件路径结构的正则表达式搜索分为三个不同类别。我现在使用3个单独的别名查询来检索非常相似的数据,我的干编码器认为这应该可以使用一个$group类型变量(它将替换下面代码中的原子、分子和生物体)或类似的东西。由于我是GraphQL的新手,我不确定这是否可行,而且我似乎找不到任何人在网上这样做。以下是我目前掌握的情况: export const pageQuery=graphql` 查询

我目前在盖茨比的一个文档网站上工作。一个特定页面检索HTML/CSS组件的各种自述文件的内容,这些组件根据其本地文件路径结构的正则表达式搜索分为三个不同类别。我现在使用3个单独的别名查询来检索非常相似的数据,我的干编码器认为这应该可以使用一个$group类型变量(它将替换下面代码中的原子、分子和生物体)或类似的东西。由于我是GraphQL的新手,我不确定这是否可行,而且我似乎找不到任何人在网上这样做。以下是我目前掌握的情况:

export const pageQuery=graphql`
查询($path:String!){
页面数据:
markdownRemark(字段:{slug:{eq:$path}){
html
田地{
鼻涕虫
标题
}
文件绝对路径
}
原子:
allMarkdownRemark(排序:{顺序:ASC,字段:[字段标题]},限制:1000,筛选器:{fileAbsolutePath:{regex:/dl atoms/“}}){
边缘{
节点{
田地{
鼻涕虫
标题
}
}
}
}
分子:
allMarkdownRemark(排序:{顺序:ASC,字段:[字段标题]},限制:1000,筛选器:{fileAbsolutePath:{regex:“/dl-molecles/”}){
边缘{
节点{
田地{
鼻涕虫
标题
}
}
}
}
生物:
allMarkdownRemark(排序:{顺序:ASC,字段:[字段标题]},限制:1000,筛选器:{fileAbsolutePath:{regex:/dl/“}){
边缘{
节点{
田地{
鼻涕虫
标题
}
}
}
}
}

`;您可以定义要在查询中使用的片段。这些允许您定义一次选择集,然后仅通过引用片段的名称来使用它。请注意,您必须知道要为其指定选择集的类型的名称

export const pageQuery = graphql`
  query($path: String!) {
    pageData: 
      markdownRemark(fields: { slug: { eq: $path } }) {
        html
        fields {
          slug
          title
        }
        fileAbsolutePath
      }

    atoms:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-atoms/"}}) {
        ...MarkdownRemarkFields
      }

    molecules:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-molecules/"}}) {
        ...MarkdownRemarkFields
      }
    organisms:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-organisms/"}}) {
        ...MarkdownRemarkFields
      }
  }

  fragment MarkdownRemarkFields on MarkdownRemarkConnection {
    edges {
      node {
        fields {
          slug
          title
        }
      }
    }
  }
`;

盖茨比文档中提到了片段。

您可以定义要在查询中使用的片段。这些允许您定义一次选择集,然后仅通过引用片段的名称来使用它。请注意,您必须知道要为其指定选择集的类型的名称

export const pageQuery = graphql`
  query($path: String!) {
    pageData: 
      markdownRemark(fields: { slug: { eq: $path } }) {
        html
        fields {
          slug
          title
        }
        fileAbsolutePath
      }

    atoms:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-atoms/"}}) {
        ...MarkdownRemarkFields
      }

    molecules:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-molecules/"}}) {
        ...MarkdownRemarkFields
      }
    organisms:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-organisms/"}}) {
        ...MarkdownRemarkFields
      }
  }

  fragment MarkdownRemarkFields on MarkdownRemarkConnection {
    edges {
      node {
        fields {
          slug
          title
        }
      }
    }
  }
`;

Gatsby文档中提到了片段。

这种技术只是减少了查询中所需数据的代码重复。根据大多数编程语言,不可能用别名和/或正则表达式过滤器中的原子、分子、生物体名称替换名称,以使用可能改变循环内值的变量吗?这种技术只是减少了查询中所需数据的代码重复。根据大多数编程语言,不可能用别名和/或正则表达式过滤器中的原子、分子、生物体名称替换名称,以使用可能改变循环内值的变量吗?