通过日期变量过滤 Graphql 结果



我正在使用graphqlgatsby从我的数据库获取数据。以下是我的查询:

export const querymk = graphql`
query HomePageQuery {
allMongodbAppsOneapps (
filter : { my_time: { eq : "2019-08-21T12:35:56.863Z" }}
)  {
nodes {
id
my_time(formatString: "DD MMMM YYYY")
text {
title
developer
icon
}
}
}
}
`

这工作正常..但是我需要替换我的过滤器:eq : "2019-08-21T12:35:56.863Z"变量date(eq : $mydate(..我不知道从哪里开始

可以通过在命名查询中提供变量来传递变量。

查看以下示例:

export const querymk = graphql`
query HomePageQuery($dateFormat : String!) {
allMongodbAppsOneapps (
filter : { my_time: { eq: $dateFormat }}
)  {
nodes {
id
my_time(formatString: "DD MMMM YYYY")
text {
title
developer
icon
}
}
}
}
`

要将变量传递给查询,必须在创建页面时将其作为上下文传递:

createPage({
...page,
context: {
...page.context,
dateFormat: `2019-08-21T12:35:56.863Z`,
},
})

这仅适用于编译时查询,这是 gatsby 的限制:

Gatsby 在构建时使用 GraphQL,而不是用于实时站点。这是独一无二的,这意味着您无需运行其他服务(例如数据库和 Node.js 服务(即可将 GraphQL 用于生产网站。

来源: https://www.gatsbyjs.org/docs/querying-with-graphql/#how-do-graphql-and-gatsby-work-together

相关文档: https://www.gatsbyjs.org/docs/creating-and-modifying-pages/#creating-pages-in-gatsby-nodejs