所以,我在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 comes with gatsby
const moment = require('moment');
exports.onCreateNode = ({ node, actions }) => {
const { createNodeField } = actions
// I'm guessing your type is StrapiEvent, but it could be st else
if (node.internal.type === `StrapiEvent`) {
const date = node.date;
createNodeField({
name: 'timestamp',
node,
// convert date to unix timestamp & convert to number
value: +moment(date).format('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")
}
}
}
}
不理想,但会奏效。