Похоже, что 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")
}
}
}
}
Не идеально, но будет работать.