React Gatsby Graph QL -筛选sitemap的文章



我使用flexblocks创建了一个盖茨比博客。问题是我想为Google News创建一个网站地图,这将不同于博客的主要网站地图。对于这个站点地图,我需要过滤在过去两天内发布的文章。我正在使用这个插件

allArticle(sort: {order: DESC, fields: date}, filter: {date: {WHAT_SHOULD_I_DO_HERE}}) {
edges {
node {
date
excerpt
title
link
slug
}
}
}

任何帮助将不胜感激,谢谢。

{date: {gte: "2021-08-27T13:11:30.443Z"}}将过滤文章,但我如何动态地获得这个日期字符串?

Gatsby在处理GraphQL范围内的日期时依赖于底层的momentjs。您只需要在查询范围内添加从函数返回的变量,例如:

const getTwoDaysAgo=()=> moment().subtract(2, "days");

在您的gatsby-config.js中,您可以调用此函数并:

要添加一个变量,您可以遵循以下三个答案:

基本上,遵循这个语法:

grapqhl(
`query getImages($fileName: String) {
landscape: file(relativePath: {eq: $fileName}) {
childImageSharp {
fluid(maxWidth: 1000) {
base64
tracedSVG
aspectRatio
src
srcSet
srcWebp
srcSetWebp
sizes
originalImg
originalName
}
}
}
}
`,
{fileName: "knight.jpg"}
)

您可以添加自定义变量。在本例中,请注意查询被包装在graphql()函数中。适用于您的情况,您可以尝试:

plugins: [
{
resolve: `gatsby-plugin-advanced-sitemap`,
options: {
query: graphql(
` 
query allArticle(
sort: {
order: DESC, fields: date
}, 
filter: {date: {twoDaysAgo}}) {
edges {
node {
date
excerpt
title
link
slug
}
}
}`, {twoDaysAgo: getTwoDaysAgo()}
)
}
}
]

注意:复制/粘贴时要小心,因为我可能会漏掉很多括号

我不确定插件是否支持这种符号,但应该支持。


{日期:{gte:"2021 - 08 - 27 - t13:11:30.443z"}}

给定已编辑的问题,使流和过滤器适应gte参数。

相关内容

  • 没有找到相关文章

最新更新