如何在gatsby graphql中查询日期范围?
所以我在graphql中有这个查询。但大于(gt)和小于(lt)不是定义的字段如何在gatsby graphql中查询日期范围?,graphql,gatsby,Graphql,Gatsby,所以我在graphql中有这个查询。但大于(gt)和小于(lt)不是定义的字段 query Test { allStrapiEvent(filter:{date:{gt:"02/13/2019"}}){ edges{ node{ name date(formatString:"MM/DD/YYYY") } } } } 看起来date是String类型,因此没有得到比较运算符(gt、lt、gte、lte);这很可惜
query Test {
allStrapiEvent(filter:{date:{gt:"02/13/2019"}}){
edges{
node{
name
date(formatString:"MM/DD/YYYY")
}
}
}
}
看起来
date
是String
类型,因此没有得到比较运算符(gt、lt、gte、lte);这很可惜,因为这真的很有用
我认为作为一种解决方法,您可以添加一个附加字段,如timestamp
,并将日期存储在数字中(如果您的CMS尚未提供)。然后可以对它们使用比较运算符
//moment.js随gatsby提供
恒力矩=要求的(‘力矩’);
exports.onCreateNode=({node,actions})=>{
const{createNodeField}=操作
//我猜你的类型是狭隘的,但也可能是其他类型
if(node.internal.type==`StrapiEvent`){
const date=node.date;
createNodeField({
名称:“时间戳”,
节点,
//将日期转换为unix时间戳并转换为数字
值:+时刻(日期)。格式('X'),
})
}
}
然后说你想让事件从昨天开始。您可以获得unix时间戳,如moment().subtract(1,'day').format('X')
/1549044285
query Test {
allStrapiEvent(filter: {
fields: {
timestamp: {
gt: 1549044285
}
}
}) {
edges{
node{
name
date(formatString:"MM/DD/YYYY")
}
}
}
}
不理想,但可以工作。我遇到了类似的问题,但需要稍微调整转换日期的方式:
值:矩.unix(time\u updated).format(),