如何在gatsby graphql中查询日期范围?

如何在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);这很可惜

所以我在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);这很可惜,因为这真的很有用

我认为作为一种解决方法,您可以添加一个附加字段,如
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(),