graphql - 如何在 Gatsby 中显示即将发生的事件列表?
问题描述
我有一组用于事件的降价文件,其中frontmatter 字段“日期”设置为事件的日期。
我不知道如何使用 graphql 来查询未来有日期的事件,限制为 3。如果它不能用 graphql 完成,那怎么办?
{
allMarkdownRemark(
sort: {order: DESC, fields: [frontmatter___date]},
filter: {frontmatter: {layout: {eq: "Event"}}},
limit: 3)
{
edges {
node {
id
fields {
slug
}
frontmatter {
title
layout
date
}
}
}
}
}
解决方案
一旦 GraphQL 查询了您的所有帖子,您就可以进行过滤:
const Posts = edges
.filter( edgeItem => edgeItem.node.frontmatter.date > Date.now())
.map(({ node }) => <PostItem key={node.id} node={node} /> )
如果您的日期存储为字符串,请先将其转换以进行比较。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
推荐阅读
- c# - C#如何每秒增加值,增量值基于amount.text文件
- python - 如何有效地识别和分类熊猫数据框中的字符串?
- python - 使用索引获得正确的标签?
- c - 将字符与字符串(两个数组)进行比较并打印结果时遇到问题?
- ubuntu - wireguard 客户端和 openvpn 服务器无法遍历数据包
- node.js - 订阅 URL 在 Apollo Graphql 订阅服务器中不起作用
- haskell - 定义数据类型包括约束函数
- typescript - 如何只指定函数的返回类型而不指定参数?
- javascript - 如何将“1h30m”样式持续时间解析为 Moment.js 持续时间
- python - 函数将 NdOverlay 返回给 DynamicMap 时的奇怪行为