Как запросить диапазон дат в gatsby graphql? - PullRequest
0 голосов
/ 01 февраля 2019

Так что у меня есть этот запрос в graphql.Но больше (gt) и меньше (lt) не определенное поле.

query Test {
  allStrapiEvent(filter:{date:{gt:"02/13/2019"}}){
    edges{
      node{
        name
        date(formatString:"MM/DD/YYYY")
      }
    }
  } 
}

1 Ответ

0 голосов
/ 02 февраля 2019

Похоже, что 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")
      }
    }
  } 
}

Не идеально, но будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...