首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在GraphQL中使用动态查询别名?

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

Stack Overflow用户
提问于 2018-11-09 15:56:59
回答 1查看 1.1K关注 0票数 0

我目前在Gatsby文档网站上工作。一个特定的页面检索HTML/CSS组件的各种自述文件的内容,根据对其本地文件路径结构的正则表达式搜索,这些组件被分成三个不同的类别。我现在使用3个独立的别名查询来检索非常相似的数据,我的干式程序员认为这应该可以通过一个$group类型的变量(它将替换下面代码中的原子、分子和有机体)或类似的东西来实现。由于我是一个真正的GraphQL新手,我不确定这是否可能,而且我似乎在网上找不到任何人这样做。这是我到目前为止所知道的:

代码语言:javascript
复制
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/"}}) {
        edges {
          node {
            fields {
              slug
              title
            }
          }
        }
      }

    molecules:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-molecules/"}}) {
        edges {
          node {
            fields {
              slug
              title
            }
          }
        }
      }
    organisms:
      allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-organisms/"}}) {
        edges {
          node {
            fields {
              slug
              title
            }
          }
        }
      }
  }
`;

EN

回答 1

Stack Overflow用户

发布于 2018-11-09 20:51:21

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

代码语言:javascript
复制
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文档here中提到了片段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53221785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档