我目前在Gatsby文档网站上工作。一个特定的页面检索HTML/CSS组件的各种自述文件的内容,根据对其本地文件路径结构的正则表达式搜索,这些组件被分成三个不同的类别。我现在使用3个独立的别名查询来检索非常相似的数据,我的干式程序员认为这应该可以通过一个$group类型的变量(它将替换下面代码中的原子、分子和有机体)或类似的东西来实现。由于我是一个真正的GraphQL新手,我不确定这是否可能,而且我似乎在网上找不到任何人这样做。这是我到目前为止所知道的:
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
}
}
}
}
}
`;
发布于 2018-11-09 20:51:21
您可以定义要在查询中使用的片段。它们允许您定义一次选择集,然后只需引用片段的名称即可使用它。请注意,您必须知道为其指定选择集的类型的名称。
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中提到了片段。
https://stackoverflow.com/questions/53221785
复制相似问题