所以我在graphql中有此查询。但是大于(gt)和小于(lt)不是一个定义的字段。
query Test {
allStrapiEvent(filter:{date:{gt:"02/13/2019"}}){
edges{
node{
name
date(formatString:"MM/DD/YYYY")
}
}
}
}
答案 0 :(得分:2)
看起来String
是timestamp
类型的,因此没有获取比较运算符(gt,lt,gte,lte);真可惜,因为这确实有用。
我认为,作为一种解决方法,您可以添加其他字段,例如// 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'),
})
}
}
并以数字形式存储日期(如果CMS尚未提供)。然后,您可以对它们使用比较运算符。
moment().subtract(1, 'day').format('X')
然后说您想从昨天开始进行活动。您可以像query Test {
allStrapiEvent(filter: {
fields: {
timestamp: {
gt: 1549044285
}
}
}) {
edges{
node{
name
date(formatString:"MM/DD/YYYY")
}
}
}
}
// 1549044285
ThreadPool
不太理想,但是可以使用。